C'est la première fois que j'utilise des fonctions de mot de passe natives PHP dans mon application. J'ai stocké le mot de passe de l'utilisateur en utilisant le code ci-dessous:password_verify() ou en comparant l'entrée de l'utilisateur haché avec le mot de passe stocké en PHP?
password_hash($this->input->post('password'),PASSWORD_BCRYPT);
Et le résultat est stocké dans la base de données. Maintenant, je veux vérifier l'utilisateur dans le processus de connexion.
Ma question est ici. I have 2 choix:
Méthode 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';
}
Méthode 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';
La méthode est plus appropriée pour un procédé de connexion?
L'un est vulnérable aux attaques de synchronisation que l'autre ne l'est pas. L'API est fournie pour une raison. Utilise le. – PeeHaa
@PeeHaa En fait ... un * fonctionne *, et l'autre ne ... – deceze
password_hash est plus sécurisé pour moi, – Beginner