strcmp vs. == vs. === in PHP zur Überprüfung der Hash-Gleichheit
Ich benutzecrypt()
Passwörter in PHP zu hashen, und ich versuche, die sicherste Methode zum Testen der Gleichheit des resultierenden Hashs bei der Durchführung von Passwortprüfungen zu finden.
Es gibt drei Optionen, die ich sehen kann:
Option 1 - Doppel gleich
function checkPassword($hash, $password)
{
return crypt($password, $hash) == $hash;
}
Option 2 - Triple Equals
function checkPassword($hash, $password)
{
return crypt($password, $hash) === $hash;
}
Option 3 -strcmp()
function checkPassword($hash, $password)
{
return strcmp(crypt($password, $hash), $hash) === 0;
}
Meine Intuition sagt mir, dass Option 1 aufgrund der fehlenden Typprüfung eine schlechte Idee ist und dass Option 2 oder 3 wahrscheinlich besser sind. Ich kann jedoch nicht herausfinden, ob es einen bestimmten Fall gibt===
oderstrcmp
würde unter scheitern. Welches ist für diesen Zweck am sichersten?