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

L'hashing della password utilizzando crypt non funziona all'accesso, viene visualizzato un passaggio errato

Al momento della registrazione crei un sale unico. Quel sale ora fa parte dell'hash. Se guardi da vicino, vedrai che è incorporato nella prima parte dell'hash. Per controllare la password, utilizza il salt della password con hash precedente, quindi utilizzerai di nuovo lo stesso salt.

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

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

Per renderlo più semplice e infallibile, usa la libreria password_compat , che lo racchiude in un'API facile da usare, che sarà integrata anche in una versione futura di PHP. Controlla il suo codice sorgente per il corretto utilizzo di crypt , poiché ci sono alcune insidie ​​di cui devi occuparti. La libreria password_compat utilizza anche un confronto binario personalizzato invece di un semplice === per contrastare gli attacchi di tempismo.