Avatar ·

Sicheres Hashing und Salt für Passwörter in PHP: Wie macht man es richtig?

Hallo zusammen. Ich bin ein PHP-Anfänger und habe ein Problem mit der Speicherung von Benutzerpasswörtern. Derzeit verwende ich einfaches md5(), aber ich habe gelesen, dass das unsicher ist. Ich habe versucht, ein Salt hinzuzufügen, bin mir aber nicht sicher, ob ich es richtig mache. Hier ist mein aktueller Code für die Registrierung: ```php $password = $_POST['password']; $salt = 'my_secret_salt'; $hashed_password = md5($salt . $password); // speichere $hashed_password in der DB ``` Und für die Überprüfung beim Login: ```php $password = $_POST['password']; $salt = 'my_secret_salt'; $hashed_password = md5($salt . $password); // vergleiche mit dem in der DB ``` Probleme, die ich sehe: 1. Das Salt ist statisch – wenn es bekannt wird, sind alle Passwörter kompromittiert. 2. md5() ist zu schnell, es kann leicht erraten werden. 3. Es gibt keinen Schutz vor Timing-Angriffen (timing attack). Könnt ihr mir sagen, wie man Passwort-Hashing in PHP richtig implementiert? Welche Funktionen sollte ich verwenden? Muss ich ein eindeutiges Salt für jeden Benutzer generieren und wo soll ich es speichern? Ich wäre dankbar für Hilfe.