sql >> Databáze >  >> RDS >> Mysql

Jak používat metodu password_hash() php ..?

Měli byste zkontrolovat nezpracované nehašované heslo jako password_verify() provádí opětovné hašování nezpracovaného hesla pomocí hašovací rutiny použité při vytváření hašovaného hesla.

Pokud se podíváte na výsledek password_hash() v hashe jsou uloženy informace o tom, která hashovací rutina byla použita k vytvoření tohoto hashe a jak byla vygenerována

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

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

Další běžnou chybou v této oblasti je, že sloupci, který používáte v databázové tabulce, nedáváte dostatek znaků, aby obsahoval úplný výsledek hash

Hash generovaný pomocí PASSWORD_BCRYPT má 60 znaků

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Pozor, když jsou ve furure poskytnuty další hashe, mohou mít za následek hash delší než 60 znaků

Stručně řečeno, váš kód by měl být

$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. Ekvivalent klauzule GroupBy a Having v relační algebře

  2. Úvod do zabezpečení na úrovni řádků v SQL Server

  3. Co je rychlejší:MySQL/PHP nebo poskytování přímo ze statických souborů?

  4. Import MS ACCESS DB do mySql?