strcmp vs. == vs. === w PHP do sprawdzania równości hash

używamcrypt() do haszowania haseł w PHP i próbuję wypracować najbezpieczniejszy sposób testowania równości wynikowego skrótu podczas sprawdzania hasła.

Są trzy opcje, które widzę:

Opcja 1 - Double Equals

function checkPassword($hash, $password)
{
    return crypt($password, $hash) == $hash;
}

Opcja 2 - potrójna

function checkPassword($hash, $password)
{
    return crypt($password, $hash) === $hash;
}

Opcja 3 -strcmp()

function checkPassword($hash, $password)
{
    return strcmp(crypt($password, $hash), $hash) === 0;
}

Moja intuicja mówi mi, że opcja 1 jest złym pomysłem ze względu na brak sprawdzania typu i że opcje 2 lub 3 będą prawdopodobnie lepsze. Jednak nie mogę się zorientować, czy istnieje taki przypadek=== lubstrcmp zawiodłoby. Co jest najbezpieczniejsze w tym celu?

questionAnswers(4)

yourAnswerToTheQuestion