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

PHP password_verify não funciona no banco de dados


O \n na linha a seguir, está incorporando uma quebra de linha, (Edit:uma que não pode ser incluída na senha inserida pelo usuário) .
$password = password_hash($pass,  PASSWORD_BCRYPT, $options)."\n";

e você precisa excluí-lo e começar de novo com um novo hash.

Jay Blanchard , um membro aqui no Stack enviou uma nota sobre isso não muito longo também no password_hash() manual, que é algo sobre o qual ele e eu conversamos.

Outra opção seria usar trim() ; que também funciona (no momento do hash).
$password = password_hash($pass,  PASSWORD_BCRYPT, $options)."\n";
$password = trim($password);
// Store in db after

No entanto, você ainda precisa começar de novo limpando o(s) hash(es) antigo(s) e criando novos.

No entanto, tenha em mente que você não deve escapar de senhas.

Um como 123'\abc (sendo perfeitamente válido) será modificado para 123\'\abc por real_escape_string() ; não é necessário. password_verify() cuida disso, em termos de segurança.