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

A senha de hash usando crypt não funciona no login, exibe a passagem incorreta


Após o registro você cria um sal único. Esse sal agora faz parte do hash. Se você olhar de perto, verá que está embutido na primeira parte do hash. Para verificar a senha, use o salt da senha com hash anterior, então você está usando o mesmo salt novamente.
$correctPasswordHash = getPasswordFromDatabase($_POST['username']);
$hash = crypt($_POST['password'], $correctPasswordHash);

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

Para tornar isso mais fácil e infalível, use a biblioteca de senha_compat , que envolve isso em uma API fácil de usar, que também será integrada em uma versão futura do PHP. Inspecione seu código-fonte para o uso correto de crypt , uma vez que existem algumas armadilhas que você precisa cuidar. A biblioteca password_compat também está usando uma comparação binária personalizada em vez de um simples === para impedir ataques de tempo.