Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Das Hashen von Passwörtern mit crypt funktioniert bei der Anmeldung nicht, es zeigt einen falschen Pass an

Bei der Registrierung erstellen Sie ein einzigartiges Salz. Dieses Salz ist jetzt Teil des Haschischs. Wenn Sie genau hinsehen, sehen Sie, dass es in den ersten Teil des Hashs eingebettet ist. Um das Passwort zu überprüfen, verwenden Sie das Salt des vorherigen gehashten Passworts, sodass Sie dasselbe Salt erneut verwenden.

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

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

Um dies einfacher und sicherer zu machen, verwenden Sie die password_compat-Bibliothek , das dies in eine einfach zu verwendende API verpackt, die auch in eine zukünftige Version von PHP integriert wird. Überprüfen Sie den Quellcode auf die korrekte Verwendung von crypt , da es einige Fallstricke gibt, um die Sie sich kümmern müssen. Die password_compat-Bibliothek verwendet auch einen benutzerdefinierten binären Vergleich anstelle eines einfachen === um Timing-Angriffe zu vereiteln.