Passwort-Hashing mit Salt in PHP: Best Practices 2025

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Hash, Salt und Ihre Sicherheit: Warum ist das 2025 so wichtig?

\n\n

Stellen Sie sich vor: Sie haben eine tolle Website gebaut, alles läuft, Benutzer registrieren sich. Doch eines Tages gelangt die Datenbank ins Netz. Was sehen Angreifer? Wenn Sie Passwörter im Klartext speichern, ist das eine Katastrophe. Wenn Sie altes md5 verwenden, ist das fast dasselbe. Wenn Sie jedoch Secure Hash and Salt einsetzen, sehen Angreifer nur eine sinnlose Zeichenfolge. Im Jahr 2025 ist das nicht nur eine Empfehlung, sondern ein Sicherheitsstandard.

\n\n

In diesem Artikel erfahren Sie, wie Sie Passwörter in PHP mit modernen Algorithmen, Salt und Best Practices korrekt hashen. Sie lernen, warum alte Methoden gefährlich sind und wie Sie in 10 Minuten auf eine sichere Passwortspeicherung umsteigen.

\n\n

Warum sind md5 und sha1 gefährlich?

\n\n

Viele Anfänger machen denselben Fehler: Sie verwenden md5($password) oder sha1($password). Im Jahr 2025 ist das nicht nur eine schlechte Praxis, sondern ein direkter Weg zur Verwundbarkeit. Warum?

\n\n
    \n
  • Berechnungsgeschwindigkeit. MD5 und SHA1 wurden für Geschwindigkeit entwickelt, nicht für Sicherheit. Moderne GPUs können Milliarden von Hashes pro Sekunde durchprobieren.
  • \n
  • Fehlendes Salt. Wenn zwei Benutzer dasselbe Passwort wählen, sind ihre Hashes identisch. Das ermöglicht den Einsatz von Regenbogentabellen.
  • \n
  • Kollisionen. Für MD5 wurden praktische Kollisionen gefunden – zwei verschiedene Eingaben erzeugen denselben Hash.
  • \n
\n\n

Zum Glück bietet PHP integrierte Funktionen, die all diese Probleme lösen. Und das ohne Installation externer Bibliotheken.

\n\n

password_hash und password_verify: Ihre Geheimwaffen

\n\n

Seit PHP 5.5.0 gibt es zwei magische Funktionen: password_hash() und password_verify(). Sie generieren automatisch ein Salt, verwenden kryptografisch sichere Algorithmen und schützen vor Timing-Angriffen.

\n\n

Beispiel für die einfache Anwendung:

\n\n
// Passwort hashen\n$password = "MeinSuperSicheresP@sswort!";\n$hash = password_hash($password, PASSWORD_DEFAULT);\necho $hash; // $2y$10$...\n
\n\n

Was ist hier passiert? Die Funktion password_hash:

\n
    \n
  • Hat ein zufälliges Salt generiert
  • \n
  • Hat den optimalen Algorithmus gewählt (standardmäßig bcrypt)
  • \n
  • Hat den Hash berechnet
  • \n
  • Gibt einen String zurück, der Hash, Salt und Algorithmus-Informationen enthält
  • \n
\n\n

Die Passwortprüfung ist genauso einfach:

\n\n
// Passwort überprüfen\n$inputPassword = "MeinSuperSicheresP@sswort!";\nif (password_verify($inputPassword, $hash)) {\n    echo "Passwort korrekt!";\n} else {\n    echo "Passwort falsch.";\n}\n
\n\n

Beachten Sie: Sie müssen das Salt nicht separat speichern. Es ist bereits im Hash enthalten. Das ist Secure Hash and Salt in Aktion.

\n\n

Welchen Algorithmus sollten Sie 2025 wählen?

\n\n

Standardmäßig verwendet password_hash bcrypt. Das ist eine ausgezeichnete Wahl für die meisten Projekte. Aber es gibt auch andere Optionen:

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
AlgorithmusKonstanteEmpfehlung
BcryptPASSWORD_BCRYPTHervorragende Wahl, überall unterstützt
Argon2iPASSWORD_ARGON2IResistent gegen Seitenkanalangriffe
Argon2idPASSWORD_ARGON2IDBeste Wahl im Jahr 2025
\n\n

Argon2id ist der Gewinner des PHC-Wettbewerbs (Password Hashing Competition). Er ist sowohl gegen GPU-Angriffe als auch gegen Timing-Angriffe resistent. Wenn Ihr PHP mit Argon2-Unterstützung kompiliert wurde (in PHP 8.x ist das bereits Standard), verwenden Sie ihn.

\n\n

Einstellung der Hashing-Kosten

\n\n

Eine der Kernideen von Secure Hash and Salt ist es, die Berechnung

Blogs

Buchempfehlungen