Es ist das erste Mal, dass ich PHP native Passwortfunktionen in meiner Anwendung verwende. Ich habe das Passwort des Benutzers mit folgendem Code gespeichert:password_verify() oder Hash-Benutzereingabe mit gespeichertem Passwort in PHP vergleichen?
password_hash($this->input->post('password'),PASSWORD_BCRYPT);
Und das Ergebnis ist in der Datenbank gespeichert. Jetzt möchte ich den Benutzer im Anmeldevorgang überprüfen.
Meine Frage ist hier. Ich habe 2 Möglichkeiten:
Methode 1
$sql = "SELECT id,password FROM tbl_members WHERE email = ? LIMIT 1";
$result = $this->db->query($sql,array('[email protected]'));
if ($result->num_rows()) {
$row = $result->row();
$hash = $row->password;
if (password_verify($this->input->post('password'), $hash)) echo 'Successful login';
}
Methode 2
$hash = password_hash($this->input->post('password'),PASSWORD_BCRYPT);
$sql = "SELECT id FROM tbl_members WHERE email = ? AND password = ? LIMIT 1";
$result = $this->db->query($sql,array('[email protected]',$user_hashed_password));
if ($result->num_rows()) echo 'Successful Login';
Welche Methode besser geeignet für einen Login-Prozess ist?
Einer ist anfällig für Timing-Angriffe der andere ist nicht. Die API wird aus einem bestimmten Grund bereitgestellt. Benutze es. – PeeHaa
@PeeHaa Eigentlich ... einer * funktioniert *, und der andere nicht ... – deceze
passwort_hash ist sicherer für mich, – Beginner