sql >> Base de Datos >  >> RDS >> Mysql

La contraseña no se verifica usando la función password_verify

No se puede buscar un hash de contraseña con sal en una base de datos. Para calcular el hash, necesita la función password_hash() como ya lo hizo correctamente en su declaración de inserción.

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_DEFAULT);

Para verificar una contraseña, primero debe buscar solo por nombre de usuario (usó una consulta preparada para evitar la inyección de sql):

$sql = 'select * from admin where username = ?';
$db->prepare($sql);
$db->bind_param('s', $first);

Cuando finalmente obtuvo el hash almacenado de la base de datos, se puede verificar de esta manera:

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);