sql >> Database teknologi >  >> RDS >> Mysql

Hashing adgangskode ved hjælp af crypt virker ikke på login, det viser forkert pass

Ved registrering opretter du et unikt salt. Det salt er nu en del af hashen. Hvis du ser godt efter, vil du se, at den er indlejret i den første del af hashen. For at kontrollere adgangskoden skal du bruge den tidligere hash-kodede adgangskodes salt, så du bruger det samme salt igen.

$correctPasswordHash = getPasswordFromDatabase($_POST['username']);
$hash = crypt($_POST['password'], $correctPasswordHash);

if ($correctPasswordHash === $hash) ...

For at gøre dette nemmere og mere idiotsikkert, brug password_compat-biblioteket , som pakker dette ind i en brugervenlig API, som også vil blive integreret i en fremtidig version af PHP. Undersøg dens kildekode for korrekt brug af crypt , da der er nogle faldgruber, du skal passe på. Password_compat-biblioteket bruger også en tilpasset binær sammenligning i stedet for en simpel === for at forhindre timing af angreb.



  1. PHP PDO hente null

  2. Hvordan kontrollerer jeg, om en værdi er et heltal i MySQL?

  3. PHP MySQL græske bogstaver, der viser som ???? mærker

  4. Ignorer bestemte WHERE-kriterier