Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser la méthode password_hash() de php.. ?

Vous êtes censé vérifier le mot de passe brut non haché, comme le password_verify() effectue le rehachage du mot de passe brut à l'aide de la routine de hachage utilisée lors de la création du mot de passe haché.

Si vous regardez le résultat du password_hash() il y a des informations stockées dans le hachage sur quelle routine de hachage a été utilisée pour créer ce hachage et comment il a été généré

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

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

Une autre erreur courante dans ce domaine est de ne pas donner à la colonne que vous utilisez dans la table de base de données suffisamment de caractères pour contenir le résultat complet du hachage

Le hachage généré à l'aide de PASSWORD_BCRYPT est de 60 caractères

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Attention, lorsque d'autres hachages sont fournis dans la furure, ils peuvent entraîner un hachage de plus de 60 caractères

Donc, en bref, votre code devrait être

$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;
}