sql >> Databasteknik >  >> RDS >> Mysql

Hashing lösenord med krypto fungerar inte på inloggningen det visar felaktigt pass

Vid registrering skapar du ett unikt salt. Det saltet är nu en del av hashen. Om du tittar noga ser du att det är inbäddat i den första delen av hashen. För att kontrollera lösenordet, använd det tidigare hashade lösenordets salt, så att du använder samma salt igen.

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

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

För att göra detta enklare och mer idiotsäkert, använd password_compat-biblioteket , som lindar in detta i ett lättanvänt API, som också kommer att integreras i en framtida version av PHP. Inspektera dess källkod för korrekt användning av crypt , eftersom det finns några fallgropar du måste ta hand om. Password_compat-biblioteket använder också en anpassad binär jämförelse istället för en enkel === för att motverka timingattacker.



  1. Connect Entity Framework med MYSQL i VS2019

  2. Vad betyder "osignerad" i MySQL och när ska det användas?

  3. Handledning för SQL-transaktioner

  4. DATE_ADD() Exempel – MySQL