sql >> Databasteknik >  >> RDS >> Mysql

Lösenordet verifieras inte med funktionen password_verify

Man kan inte söka efter en saltad lösenordshash i en databas. För att beräkna hashen behöver du funktionen password_hash() som du redan gjorde korrekt i din insert-sats.

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

För att kontrollera ett lösenord behöver du först endast söka på användarnamn (använde en förberedd fråga för att undvika sql-injektion):

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

När du äntligen fick den lagrade hashen från databasen kan den kontrolleras så här:

// 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);


  1. ASP Classic SQL Query felmeddelande, rätt syntax tack

  2. Python mySQL - undflyende citat

  3. Eftersom du behöver känna till PowerShell

  4. PHP singleton databas anslutningsmönster