-
Notifications
You must be signed in to change notification settings - Fork 415
Description
Why is null
or a boolean a valid salt? Sure, it will be caught later by the length check, but that's only because those values happen to have a string representation with less than 22 characters. Semantically, this makes no sense.
Why is a number a valid salt? 22 decimal digits are hardly acceptable.
Is it really a good idea to accept objects? Just because it has a __toString()
method doesn't mean it was actually intended to mimic a string. This is very error-prone, because the user might accidentally pass some object which merely contains the salt string (an instance of a randomness class or whatever).
In my opinion, the function should only accept a real, actual string. This might be against “the PHP way”, but I don't think a security-related function is the right place for type juggling, duck typing or whatever.