sql >> Database >  >> RDS >> Mysql

Hoe gebruik je de methode password_hash() van php...?

Het is de bedoeling dat u het onbewerkte, niet-gehashte wachtwoord controleert, zoals de password_verify() doet het opnieuw hashen van het onbewerkte wachtwoord met behulp van de hash-routine die wordt gebruikt bij het maken van het gehashte wachtwoord.

Als je kijkt naar het resultaat van de password_hash() er is informatie opgeslagen in de hash over welke hash-routine is gebruikt om deze hash te maken en hoe deze is gegenereerd

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

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

Een andere veelgemaakte fout op dit gebied is dat u de kolom die u in de databasetabel gebruikt niet genoeg tekens geeft om het volledige resultaat van de hash te bevatten

De hash gegenereerd met PASSWORD_BCRYPT is 60 tekens

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Pas op, als er in de toekomst andere hashes worden verstrekt, kunnen deze resulteren in een hash die langer is dan 60 tekens

Dus in het kort zou je code

. moeten zijn
$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. Synchroniseer twee databaseschema's in MySQL

  2. PHP SQL Join Query inhoud samenvoegen in Multi-Array

  3. Een SQL-query in een PHP-functie plaatsen

  4. Hoe hernoem je een primaire sleutel in Oracle zodat deze opnieuw kan worden gebruikt?