FREE tools

PHP Password: Sicher Passwörter in PHP speichern, prüfen und schützen

Lukas Fuchs vor 13 Stunden Backend-Entwicklung 3 Min. Lesezeit

Wenn du in PHP Passwörter falsch behandelst, baust du dir ein Sicherheitsproblem ein. Ich zeige dir, wie ich PHP Passwords sauber speichere, prüfe und absichere – ohne unnötigen Ballast.

PHP Password richtig umsetzen

Wenn ich in PHP mit Passwörtern arbeite, denke ich zuerst nicht an Code. Ich denke an Schaden. Ein falscher Umgang mit PHP Password kann aus einem kleinen Bug schnell ein echtes Sicherheitsproblem machen. Gute Nachricht: Du brauchst dafür keine komplizierte Architektur. Du brauchst ein paar saubere Regeln und die richtigen Funktionen.

PHP Password: Was du wirklich wissen musst

Ein Passwort darfst du nie im Klartext speichern. Nicht in der Datenbank. Nicht im Log. Nicht in einer Session-Variable als Notlösung. Der einzige richtige Weg ist: Passwort hashen, Hash speichern, später gegen den Hash prüfen.

In PHP ist der Standard dafür klar: password_hash() und password_verify(). Genau dafür sind sie da. Und genau deshalb solltest du sie fast immer benutzen. Die offizielle Doku findest du hier: php.net/password_hash und php.net/password_verify.

Warum ich nie eigene Passwort-Logik baue

Ich sehe immer wieder denselben Fehler: Leute nehmen md5(), sha1() oder irgendeine selbst gebastelte Kombination aus Salt und Hash. Klingt technisch. Ist aber schwach. Warum? Weil diese Verfahren nicht für Passwörter gebaut wurden.

Passwörter brauchen langsame, adaptive Hashes. Genau das liefern moderne Funktionen wie bcrypt und Argon2. Das macht Brute-Force-Angriffe deutlich teurer.

Diese Fehler vermeide ich bei PHP Password

  • Kein MD5 für Passwörter.
  • Kein SHA1 für Passwörter.
  • Kein eigener Salt-Mechanismus, wenn du Standardfunktionen nutzen kannst.
  • Kein Klartext in Datenbank, E-Mail oder Logfiles.
  • Kein Vergleich mit == für Passwörter oder Hashes.

PHP Password speichern: So mache ich es

Wenn sich ein Nutzer registriert, hashe ich das Passwort direkt vor dem Speichern. So bleibt nur der Hash in der Datenbank. Das ist die Basis.

$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_DEFAULT);

// Danach $hash in der Datenbank speichern

PASSWORD_DEFAULT ist in vielen Fällen die beste Wahl, weil PHP damit den empfohlenen Algorithmus verwendet. Wenn sich der Standard in Zukunft ändert, profitierst du davon automatisch. Das ist praktisch. Aber: Ich prüfe trotzdem regelmäßig, ob mein Setup noch sauber ist.

Wann ich Argon2 bevorzuge

Wenn mein Server es unterstützt, schaue ich mir Argon2 an. Das ist oft eine starke Wahl für Passwörter. In PHP kannst du zum Beispiel PASSWORD_ARGON2ID verwenden, wenn dein System es unterstützt. Die Details stehen ebenfalls in der offiziellen PHP-Doku.

PHP Password prüfen: Der richtige Login-Check

Beim Login vergleiche ich das eingegebene Passwort nicht direkt mit dem gespeicherten Wert. Ich nutze immer password_verify(). Die Funktion nimmt das Klartext-Passwort aus dem Formular und den gespeicherten Hash aus der Datenbank.

$password = $_POST['password'];
$hash = $row['password_hash'];

if (password_verify($password, $hash)) {
    // Login erfolgreich
} else {
    // Login fehlgeschlagen
}

Das ist simpel, robust und sicher. Genau so will ich es haben.

PHP Password: Die wichtigsten Sicherheitsregeln

Ein sicherer Passwort-Flow besteht nicht nur aus Hashing. Ich achte auf das ganze System. Sonst baue ich mir an anderer Stelle wieder ein Loch.

  • HTTPS erzwingen, damit das Passwort auf dem Transportweg geschützt ist.
  • Starke Passwortregeln nutzen, aber nicht unnötig kompliziert machen.
  • Fehlermeldungen neutral halten. Nicht sagen, ob E-Mail oder Passwort falsch ist.
  • Rate Limiting oder Login-Blocking einbauen, um Brute Force zu bremsen.
  • CSRF-Schutz bei Formularen prüfen.
  • Passwort-Reset sicher bauen mit Einmal-Token und Ablaufzeit.

PHP Password ändern: So gehe ich vor

Wenn ein Nutzer sein Passwort ändert, behandle ich das wie eine neue Registrierung. Das neue Passwort wird wieder gehasht und dann gespeichert. Wichtig: Nach einer Passwortänderung beende ich oft aktive Sessions oder prüfe, ob alte Tokens noch gültig sein sollen.

Das ist wichtig, weil ein gestohlenes Session-Cookie sonst trotz neuem Passwort weiter funktionieren kann.

PHP Password Reset: Das sichere Muster

Ein Reset-Link per E-Mail ist normal, aber nur sicher, wenn ich ihn richtig umsetze. Ich arbeite mit einem zufälligen Token, speichere nur einen Hash davon und setze ein kurzes Ablaufdatum.

Mein Reset-Flow in kurz

  • Nutzer fordert Reset an.
  • Ich generiere einen zufälligen Token.
  • Ich speichere den Token-Hash in der Datenbank.
  • Ich sende den Link mit Token an die E-Mail-Adresse.
  • Beim Klick prüfe ich Token und Ablaufzeit.
  • Danach setze ich ein neues Passwort mit password_hash().

PHP Password: Typische Fragen, die ich oft bekomme

Wie lang sollte ein Passwort-Hash sein?
Die Länge hängt vom Algorithmus ab. Mit password_hash() musst du dir das normalerweise nicht manuell ausdenken. Trotzdem sollte deine Datenbankspalte genug Platz haben. Ich nehme lieber etwas Luft nach oben.

Soll ich Salts selbst speichern?
Nein, nicht manuell. Die PHP-Funktionen kümmern sich darum. Das ist besser als selbst etwas zusammenzubauen.

Kann ich ein Passwort zurückbekommen?
Nein. Und das ist gut so. Ein Passwort-Hash ist bewusst ein Einwegwert.

Ist password_hash() langsam?
Ja, absichtlich. Genau das ist der Punkt. Es soll Angreifern wehtun, nicht deinem Nutzer.

PHP Password: So denke ich über gute Standards

Ich will keine Heldenlösungen. Ich will Standards, die funktionieren. Deshalb ist mein Prinzip einfach:

  • Speichern nur als Hash.
  • Prüfen nur mit password_verify().
  • Keine alten Hash-Funktionen.
  • Regelmäßig Sicherheit nachziehen, wenn sich PHP oder die Umgebung ändert.

Wenn du das sauber machst, bist du schon weit vor vielen Projekten draußen.

PHP Password: Mein Fazit

Ich behandle jedes Passwort wie ein Sicherheitsrisiko, bis es sauber gehasht und geschützt ist. Genau deshalb nutze ich in PHP die eingebauten Funktionen, speichere nie Klartext und halte den Login-Flow einfach. Wenn du PHP Password richtig umsetzt, schützt du nicht nur Nutzerkonten, sondern auch dein gesamtes System.

PHP Password ist kein Detail. Es ist einer der wichtigsten Bausteine für sichere Webanwendungen.

Weitere Beiträge

Folge uns

Neue Beiträge

Backend-Entwicklung

PHP Password: Sicher Passwörter in PHP speichern, prüfen und schützen

AUTOR • Oct 02, 2026
DevOps & Deployment

Windows 7 ohne Aktivierungsschlüssel aktivieren: Was wirklich geht und was nicht

AUTOR • Oct 01, 2026
DevOps & Deployment

Gerät Netzwerk anzeigen CMD: So findest du Netzwerkgeräte am PC in Sekunden

AUTOR • Sep 29, 2026
Backend-Entwicklung

PHP OIDC: So baust du OpenID Connect sauber in deine PHP-App ein

AUTOR • Sep 28, 2026
Webdesign & UX

Outlook Symbol Übersicht: Alle wichtigen Symbole in Outlook schnell verstehen

AUTOR • Sep 28, 2026
Webdesign & UX

Fully Kiosk Browser mit Home Assistant auf Deutsch einrichten: So machst du aus jedem Tablet ein smartes Display

AUTOR • Sep 28, 2026
Webdesign & UX

Warum Apps nicht funktionieren: Die häufigsten Ursachen und wie du sie löst

AUTOR • Sep 27, 2026
Datenbanken & ORM

PICR erklärt: Was hinter dem Keyword steckt und wie du es praktisch einsetzt

AUTOR • Sep 27, 2026
Frontend-Entwicklung

Ziehen in der Leiste: Ursachen, Warnzeichen und was ich sofort tun würde

AUTOR • Sep 26, 2026
Webdesign & UX

Excel wenn Farbe Wert: So prüfst du Zellfarben und gibst Werte gezielt aus

AUTOR • Sep 25, 2026
Webdesign & UX

WLAN, Wlan oder WLAN? Die richtige Schreibweise für das kabellose Netzwerk einfach erklärt

AUTOR • Sep 25, 2026
Webdesign & UX

Vorschau keine angezeigt PDF-Datei: Ursachen, Lösungen und schnelle Fixes

AUTOR • Sep 24, 2026
Webdesign & UX

Form: Was sie bedeutet, warum sie wichtig ist und wie du sie in Produkt, Content und Conversion nutzt

AUTOR • Sep 24, 2026
Webdesign & UX

Programm starten CMD: So öffnest du jede Anwendung direkt über die Eingabeaufforderung

AUTOR • Sep 24, 2026
Webdesign & UX

PlayStation 5 Abdeckung entfernen: So klappt es ohne Kratzer oder Bruch

AUTOR • Sep 22, 2026
Webdesign & UX

Word Tabelle kopieren ohne Formatierung verlieren: So klappt es sauber

AUTOR • Sep 21, 2026
DevOps & Deployment

Externe Festplatte für Mac partitionieren: So teilst du deine HDD oder SSD richtig auf

AUTOR • Sep 21, 2026
Performance & SEO

filetype: So findest du Dateien schneller mit der Google-Suchoperator-Abkürzung

AUTOR • Sep 21, 2026
Performance & SEO

Excel Zahlenfolge erstellen: So machst du nummerierte Listen, Serien und automatische Reihen in Minuten

AUTOR • Sep 21, 2026
DevOps & Deployment

RJ45 Stecker Belegung 4 Adern: So verdrahtest du 4-adrige Kabel richtig

AUTOR • Sep 20, 2026

Beliebte Beiträge

Webdesign & UX

So vergrößern Sie Bilder in Photoshop ohne Qualitätsverlust – Eine Schritt-für-Schritt-Anleitung

AUTOR • Jun 29, 2025
Backend-Entwicklung

Der Wertebereich von Double – Alles was du wissen musst

AUTOR • Jun 27, 2025
Webdesign & UX

So zeigen Sie versteckte Dateien unter Windows 7 an – Eine Schritt-für-Schritt-Anleitung

AUTOR • Jun 24, 2025
Frontend-Entwicklung

How to Embed YouTube Videos with Privacy Settings: A Step-By-Step Guide

AUTOR • Jun 16, 2025
Backend-Entwicklung

Top Email Forwarding Plugins for WordPress That You Should Consider

AUTOR • Jun 16, 2025
Frontend-Entwicklung

Entschlüsselung des Begriffs: Was ist 'ref'?

AUTOR • Jul 10, 2025
Backend-Entwicklung

First oder Logic: Die Bedeutung von Entscheidungstechniken in der Softwareentwicklung

AUTOR • Jul 08, 2025
Full-Stack

Arithmetisches Mittel: Die Grundlagen und Anwendungen

AUTOR • Jul 03, 2025
Datenbanken & ORM

Postgres nicht gleich: Warum die Wahl des richtigen Datenbankmanagementsystems entscheidend ist

AUTOR • Jul 03, 2025
Full-Stack

Scatterplots in R: Grafikvisualisierung für Datenanalyse leicht gemacht

AUTOR • Jul 03, 2025
Performance & SEO

Die besten kostenlosen Audio CD MP3 Converter: Musik in Höchstform

AUTOR • Jul 03, 2025
APIs & Microservices

Alles was du über NAT IP wissen musst: Vorteile, Funktionen und Einsatzmöglichkeiten

AUTOR • Jul 02, 2025
DevOps & Deployment

Die Macht von Bash: Mit 'for i in seq' Schleifen effizient nutzen

AUTOR • Jul 02, 2025
Full-Stack

Alles, was du über Teamspeak 5 Server wissen musst: Aufbau, Vorteile und Tipps

AUTOR • Jun 29, 2025
APIs & Microservices

SDK vs API: Was ist der Unterschied und wann nutzt man was?

AUTOR • Jun 27, 2025
Performance & SEO

Sicher und effizient im Internet surfen: Deine umfassende Anleitung

AUTOR • Jun 25, 2025
Performance & SEO

Wie man überzeugende Artikel für SEO erstellt: Ein umfassender Leitfaden

AUTOR • Jun 24, 2025
DevOps & Deployment

Was bedeutet 'migrieren'? Eine umfassende Erklärung und Anwendung

AUTOR • Jun 24, 2025
DevOps & Deployment

Storage Executive: Der Ultimative Leitfaden zur Verwaltung Ihrer Speichersysteme

AUTOR • Jun 22, 2025
DevOps & Deployment

Das Homeverzeichnis: So nutzen Sie es optimal für Ihre Website

AUTOR • Jun 19, 2025