Ik negeer de problemen met je database-statements voor nu, ik beantwoord de vraag over password_hash
.
Kortom, nee, zo doe je het niet. U wilt het zout niet alleen opslaan, u moet zowel de hash als het zout opslaan en vervolgens beide gebruiken om het wachtwoord te verifiëren. password_hash
geeft een string terug die beide bevat.
De password_hash
functie retourneert een tekenreeks die zowel de hash als het zout bevat. Dus:
$hashAndSalt = password_hash($password, PASSWORD_BCRYPT);
// Insert $hashAndSalt into database against user
Vervolgens om te verifiëren:
// Fetch hash+salt from database, place in $hashAndSalt variable
// and then to verify $password:
if (password_verify($password, $hashAndSalt)) {
// Verified
}
Bovendien, zoals de opmerkingen suggereren, kun je, als je geïnteresseerd bent in beveiliging, kijken naar mysqli
(ext/mysql
is verouderd in PHP5.5), en ook dit artikel over SQL-injectie:http://php.net/manual/en/security.database.sql-injection.php