sql >> Databasteknik >  >> RDS >> Mysql

Hur använder man phps password_hash()-metod..?

Det är meningen att du ska kontrollera det obearbetade ohashade lösenordet som password_verify() gör omhasningen av det råa lösenordet med hash-rutinen som användes när det hashade lösenordet skapades.

Om du tittar på resultatet av password_hash() det finns information lagrad i hashen om vilken hash-rutin som användes för att skapa denna hash och hur den genererades

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

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

Ett annat vanligt misstag i detta område är att inte ge kolumnen du använder i databastabellen tillräckligt många tecken för att innehålla hela resultatet av hashen

Den hash som genereras med PASSWORD_BCRYPT är 60 tecken

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Se upp, när andra hash tillhandahålls i fururen kan de resultera i en hash som är längre än 60 tecken

Så kortfattat bör du koden vara

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



  1. Att välja ett objekt som matchar flera taggar

  2. Hitta och ta bort icke-ASCII-tecken från en Oracle Varchar2

  3. Förslag för implementering av revisionstabeller i SQL Server?

  4. MySQL - ORDER BY-värden inom IN()