Skip to main content

Was ist Hashing?

Beim Hashing werden Klartextdaten wie ein Passwort per Einwegtransformation in einen String fester Länge überführt. Aus dem gleichen Input entsteht immer der gleiche Hash-Wert, aber der Klartext lässt sich aus dem Hash nicht wiederherstellen. Die Facade Hash von Laravel unterstützt zur sicheren Ablage von Passwörtern die Algorithmen bcrypt und Argon2.

Vergleich der Algorithmen

Der Arbeitsfaktor (Work Factor) von bcrypt steuert, wie lange die Hash-Berechnung dauert. Je langsamer der Hash, desto resistenter ist das System gegen Brute-Force-Angriffe. Wenn Hardware schneller wird, sollten Sie den Arbeitsfaktor erhöhen, um das Sicherheitsniveau zu halten.

Ablauf von Hashing und Prüfung


Konfiguration

Standardmäßig verwendet Laravel den Treiber bcrypt. Über die Umgebungsvariable HASH_DRIVER können Sie ihn ändern.
Um die Hashing-Konfiguration anzupassen, veröffentlichen Sie die Konfigurationsdatei mit config:publish.
Danach lassen sich in config/hashing.php etwa Standard-Arbeitsfaktoren anpassen.

Grundlegende Verwendung

Passwort hashen

Übergeben Sie Hash::make() das Klartext-Passwort, um den Hash zu erhalten. Speichern Sie diesen Hash in der Datenbank.
Speichern Sie nur den Hash-Wert in der Datenbank – niemals das Klartext-Passwort.

Arbeitsfaktor von bcrypt anpassen

Über die Option rounds regeln Sie den Rechenaufwand des Hashings. Höhere Werte sind sicherer, benötigen aber mehr Zeit. Der Standard (12) ist für die meisten Anwendungen angemessen.

Arbeitsfaktor von Argon2 anpassen

Bei Argon2 passen Sie den Rechenaufwand über die Optionen memory, time und threads an.
Details zu den Argon2-Optionen finden Sie in der PHP-Dokumentation.

Passwörter prüfen

Mit Hash::check() prüfen Sie, ob ein Klartext-Passwort dem gespeicherten Hash entspricht. Ein typisches Einsatzgebiet ist die Login-Logik.
Verwenden Sie Auth::attempt(), wird diese Prüfung automatisch durchgeführt – ein direkter Aufruf ist dann nicht nötig. Hash::check() ist praktisch, wenn Sie das aktuelle Passwort manuell verifizieren möchten.

Neubestimmung des Hashes

Mit Hash::needsRehash() prüfen Sie, ob ein bestehender Hash mit einem anderen Arbeitsfaktor erzeugt wurde als aktuell konfiguriert. Nützlich, um nach einer Änderung des Arbeitsfaktors bestehende Hashes auf die neue Konfiguration umzustellen.
Ein Beispiel für Rehash bei erfolgreichem Login:
Passen Sie den Arbeitsfaktor bei Hardware-Fortschritten regelmäßig an, um Ihr Sicherheitsniveau zu erhalten. Mit needsRehash() können Sie beim natürlichen Login die Passwörter im Vorbeigehen aktualisieren.

Algorithmusverifikation

Standardmäßig prüft Hash::check(), ob der Hash mit dem aktuell konfigurierten Algorithmus erzeugt wurde. Bei einem abweichenden Algorithmus wird eine RuntimeException ausgelöst. Damit lassen sich Angriffe durch das Vertauschen des Hash-Algorithmus verhindern. Wenn Sie – etwa während einer Migration – mehrere Algorithmen gleichzeitig unterstützen müssen, können Sie diese Prüfung mit HASH_VERIFY=false deaktivieren.
Mit HASH_VERIFY=false schalten Sie die Algorithmusprüfung ab. Nutzen Sie das nur während einer Migration und setzen Sie den Wert danach auf true (Standard) zurück.

Zusammenfassung

Nächste Schritte

Einführung in die Authentifizierung

Verstehen Sie den gesamten Ablauf der Authentifizierung, inklusive des Logins mit Hash::check().
Zuletzt geändert am 13. Juli 2026