Wie kann man in PHP und SQL ein Passwort mit SHA1 verschlüsseln und in der Datenbank vergleichen?

Wie kann ich in PHP ein Passwort mit SHA1 verschlüsseln und es dann mit dem Hash in der Datenbank vergleichen?

Uhr
Um ein Passwort in PHP mit SHA1 zu verschlüsseln und es anschließend mit dem in der Datenbank gespeicherten Hash zu vergleichen, gibt es mehrere Lösungsansätze. Es wird jedoch empfohlen, statt SHA1 eine sicherere Hash-Funktion wie bcrypt oder Argon2 zu verwenden. Diese bieten eine bessere Sicherheit gegen Brute-Force-Angriffe.

Ein möglicher Ansatz in PHP ist die Verwendung der Funktionen "password_hash" und "password_verify". Hier ist ein Beispiel, ebenso wie du diese Funktionen verwenden kannst um das Passwort zu verschlüsseln und zu überprüfen:

1. Passwort verschlüsseln:
Zuerst nimmst du das eingegebene Passwort von der Login-Seite und verschlüsselst es mit der "password_hash" Funktion. Diese Funktion verwendet automatisch eine sichere Hash-Funktion und fügt den Salt hinzu:

```php
$password = $_POST['password']; // Das eingegebene Passwort von der Login-Seite
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
```

Der verschlüsselte Hash ist nun in der Variable "$hashedPassword" gespeichert und kann in der Datenbank gespeichert werden.

2. Passwort überprüfen:
Wenn ein Benutzer sich einloggen möchte nimmst du das eingegebene Passwort und den gespeicherten Hash aus der Datenbank. Du verwendest dann die "password_verify" Funktion um zu überprüfen, ob das eingegebene Passwort mit dem Hash übereinstimmt:

```php
$enteredPassword = $_POST['password']; // Das eingegebene Passwort von der Login-Seite
$storedHash = "SELECT password FROM benutzer WHERE nutzername = ?"; // SQL-Abfrage um den gespeicherten Hash abzurufen
if (password_verify($enteredPassword, $storedHash)) {
// Passwort ist korrekt
} else {
// Passwort ist nicht korrekt
}
```

In diesem Beispiel verwendest du die SQL-Abfrage um den gespeicherten Hash für den Nutzernamen abzurufen. Stelle sicher, dass du den Hash-Wert richtig aus der Datenbank abfragst und dass du die Verbindung zur Datenbank korrekt hergestellt hast.

Essenziell bleibt: Dass du beim Speichern des Hashwertes in der Datenbank sicherstellst, dass das entsprechende Feld groß genug ist um den gesamten Hashwert aufzunehmen. Ein passendes Feld könnte beispielsweise VARCHAR(255) sein.

Bitte beachte: Dass SHA1 als unsicher gilt und deshalb nicht weiterhin verwendet werden sollte. Verwende stattdessen bcrypt oder Argon2, da diese Funktionen einen zusätzlichen Salting-Mechanismus zur Sicherheit bieten.






Anzeige