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

Quale metodo è migliore per convalidare le credenziali dell'utente?

Il fatto è... Dovresti conservare salato, hash password nella banca dati. Poiché questi sono salati singolarmente per utente/password, non puoi cercali direttamente con password = ? , perché non conosci il sale e quindi non puoi calcolare in anticipo l'hash corrispondente. Se lo stai facendo correttamente, devi recuperare prima il record utente per nome utente, quindi convalidare l'hash della password utilizzando il salt/hash recuperato. Pseudocodice:

$user = fetch_from_database($_POST['username']);

if (!$user) {
    throw new Exception("User doesn't exist");
}

if (!password_verify($_POST['password'], $user['password_hash'])) {
    throw new Exception('Invalid password');
}

echo 'Welcome ', $user['name'];

Vedi http://php.net/password_hash , http://php.net/password_verify .