Passwörter sicher speichern
Hashen Sie Passwörter mit password_hash und überprüfen Sie sie mit password_verify.
Passwörter sicher speichern ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Passwörter niemals im Klartext speichern
Wenn Passwörter im Klartext gespeichert werden, legt ein Datenbankleck die Passwörter aller Benutzer offen. Speichern Sie immer einen kryptografischen Hash – idealerweise mit bcrypt, Argon2id oder scrypt.
password_hash()
Die integrierte PHP-Funktion password_hash() erstellt einen sicheren Hash mit einem zufälligen Salt, der in der Ausgabe enthalten ist.
<?php
$hash = password_hash("mysecretpassword", PASSWORD_BCRYPT);
// Output: $2y$10$... (includes algorithm, cost, salt, hash)password_verify()
Überprüfen Sie ein Klartextpasswort anhand eines gespeicherten Hashes.
<?php
$hash = "$2y$10$abcdef...";
$valid = password_verify("mysecretpassword", $hash);
if ($valid) {
echo "Correct password!";
}Optionen für Algorithmen
PHP unterstützt:
PASSWORD_BCRYPT– weit verbreitet, Limit von 72 BytePASSWORD_ARGON2I– speicherintensiv (PHP 7.2+)PASSWORD_ARGON2ID– empfohlen, widersteht GPU-Angriffen (PHP 7.3+)PASSWORD_DEFAULT– derzeit bcrypt, kann sich in zukünftigen PHP-Versionen ändern
Kostenfaktor
Der Kostenfaktor bestimmt, wie langsam die Hash-Berechnung ist. Höhere Kosten verlangsamen Brute-Force-Angriffe. Der Standardkostenfaktor für bcrypt ist 10.
<?php
$hash = password_hash("secret", PASSWORD_BCRYPT, ["cost" => 12]);
// Cost 12 takes ~0.5s on typical hardware — acceptable for loginpassword_needs_rehash()
Prüfen Sie nach einem PHP-Upgrade oder einer Änderung der Kosteneinstellungen, ob vorhandene Hashes aktualisiert werden müssen.
<?php
if (password_verify($plain, $storedHash) &&
password_needs_rehash($storedHash, PASSWORD_DEFAULT)) {
$user->update(["password" => password_hash($plain, PASSWORD_DEFAULT)]);
}Die Laravel-Hash-Fassade
Laravel kapselt password_hash in der Hash-Fassade und verwendet standardmäßig bcrypt.
<?php
use Illuminate\Support\Facades\Hash;
$hash = Hash::make("mysecretpassword");
$valid = Hash::check("mysecretpassword", $hash); // trueArgon2 in Laravel
Konfigurieren Sie Laravel in config/hashing.php für die Verwendung von Argon2id.
// config/hashing.php
"driver" => "argon2id",Umgang mit Salts
Moderne PHP-Hashing-Funktionen fügen automatisch ein kryptografisch zufälliges Salt hinzu. Implementieren Sie niemals ein eigenes Salting – dabei können leicht Fehler entstehen.
Pepper (Geheimnis auf Anwendungsebene)
Ein optionales zusätzliches Geheimnis (Pepper), das außerhalb der Datenbank gespeichert wird, kann vor dem Hashing einbezogen werden. Selbst wenn die Datenbank gestohlen wird, kann der Angreifer ohne den Pepper keinen Brute-Force-Angriff durchführen.
Timing-sicherer Vergleich
password_verify() verwendet intern einen Vergleich in konstanter Zeit und verhindert dadurch Timing-Angriffe. Vergleichen Sie Hashes niemals mit ==.
Zusammenfassung
Verwenden Sie password_hash() mit PASSWORD_DEFAULT oder PASSWORD_ARGON2ID. Überprüfen Sie Passwörter mit password_verify(). Erstellen Sie bei der Anmeldung bei Bedarf einen neuen Hash. Speichern Sie Passwörter niemals im Klartext und verwenden Sie niemals MD5 oder SHA1 für Passwörter.
Kurztest
Welche Funktion überprüft ein Passwort anhand eines von PHP erzeugten Hashes?
Häufig gestellte Fragen
Ist die Lektion „Passwörter sicher speichern“ kostenlos?
Ja — der vollständige Text von „Passwörter sicher speichern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Passwörter sicher speichern“?
Hashen Sie Passwörter mit password_hash und überprüfen Sie sie mit password_verify. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Passwörter sicher speichern“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Cross-Site-Scripting (XSS) verhindern
- SQL-Injection und parametrisierte Abfragen
- CSRF-Schutz
- Passwörter sicher speichern