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

Como usar o método password_hash() do php ..?


Você deve verificar a senha bruta sem hash, como o password_verify() faz o re-hashing da senha bruta usando a rotina de hash usada ao criar a senha com hash.

Se você observar o resultado do password_hash() há informações armazenadas no hash sobre qual rotina de hash foi usada para criar esse hash e como ele foi gerado
$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

if (password_verify($password, $hash)) { 
   return true;
} else {
    return false;
}

Outro erro comum nesta área é não dar à coluna que você usa na tabela do banco de dados caracteres suficientes para conter o resultado completo do hash

O hash gerado usando PASSWORD_BCRYPT tem 60 caracteres
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Cuidado, quando outros hashes são fornecidos no furure, eles podem resultar em um hash com mais de 60 caracteres

Então, em resumo, seu código deve ser
$this->db->select('password');
$this->db->from('usersdetails');
$this->db->where('email', $email);
$this->db->limit(1);
$query = $this->db->get();
$pwd_from_db = $query->row()->password;

if (password_verify($this->input->post('password'), $pwd_from_db)) {
   return true;
} else {
    return false;
}