sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bruger man phps password_hash() metode..?

Det er meningen, at du skal tjekke den rå uhashed adgangskode som password_verify() foretager genhasningen af ​​den rå adgangskode ved hjælp af hash-rutinen, der blev brugt ved oprettelse af den hash-kodede adgangskode.

Hvis du ser på resultatet af password_hash() der er gemt information i hashen om, hvilken hash-rutine der blev brugt til at oprette denne hash, og hvordan den blev genereret

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

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

En anden almindelig fejl i dette område er ikke at give den kolonne, du bruger i databasetabellen nok tegn til at indeholde det fulde resultat af hashen

Den hash, der genereres ved hjælp af PASSWORD_BCRYPT, er på 60 tegn

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Pas på, når andre hashes leveres i fururen, kan de resultere i en hash på mere end 60 tegn

Så kort fortalt skal din kode være

$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. Hvordan kan jeg rette denne fejl:ikke understøttet SQL92?

  2. Indstil sqlite db korrekt i Android

  3. Forskellige måder at overvåge SQL Server AlwaysOn Availability Groups

  4. Hvordan får man primær nøglekolonne i Oracle?