Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual método é melhor para validar as credenciais do usuário?


A questão é… Você deve armazenar salgado, hash senhas no banco de dados. Uma vez que estes são salgados individualmente por usuário/senha, você não pode procure-os diretamente com password = ? , porque você não conhece o sal e, portanto, não pode calcular o hash correspondente com antecedência. Se estiver fazendo isso corretamente, você deve busque o registro do usuário por nome de usuário primeiro e, em seguida, valide o hash de senha usando o salt/hash recuperado. Pseudo-código:
$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'];

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