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

Verwendung der Funktionen password_hash und password_verify von PHP 5.5

Ich ignoriere die Probleme mit Ihren Datenbankanweisungen vorerst und beantworte die Frage zu password_hash .

Kurz gesagt, nein, so macht man das nicht. Sie möchten das Salt nicht allein speichern, Sie sollten sowohl den Hash als auch das Salt speichern und dann beide verwenden, um das Passwort zu überprüfen. password_hash gibt einen String zurück, der beides enthält.

Der password_hash Die Funktion gibt einen String zurück, der sowohl den Hash als auch das Salt enthält. Also:

$hashAndSalt = password_hash($password, PASSWORD_BCRYPT);
// Insert $hashAndSalt into database against user

Dann zur Überprüfung:

// Fetch hash+salt from database, place in $hashAndSalt variable
// and then to verify $password:
if (password_verify($password, $hashAndSalt)) {
   // Verified
}

Wie die Kommentare andeuten, sollten Sie sich außerdem mysqli ansehen, wenn Sie an Sicherheit interessiert sind (ext/mysql ist in PHP5.5 veraltet), und auch dieser Artikel über SQL-Injection:http://php.net/manual/en/security.database.sql-injection.php