Doğan Ucar
Doğan Uçar
Geschäftsführer

CSRF-Token sind die wirksamste Schutzmaßnahme gegen Cross-Site Request Forgery. Die korrekte Implementierung erfordert jedoch Sorgfalt: Ein falsch konfigurierter Token-Schutz wiegt Entwickler in falscher Sicherheit. Dieser Artikel beschreibt Best Practices für PHP-Anwendungen und JavaScript-Frontends.

Das Synchronizer Token Pattern

Das Standardverfahren für CSRF-Schutz funktioniert so: Der Server generiert bei jedem Seitenaufruf ein zufälliges Token und fügt es als verstecktes Feld in jedes Formular ein. Bei der Formularübermittlung prüft der Server, ob das mitgesendete Token mit dem in der Session gespeicherten Token übereinstimmt. Ein Angreifer kann dieses Token nicht erraten, weil er keinen Zugriff auf die Seite hat.

Best Practices für die Token-Generierung

  • Kryptografisch sichere Zufallswerte verwenden: In PHP nutzen Sie random_bytes(32) oder bin2hex(random_bytes(32))
  • Token pro Session, nicht pro Request: Ein Token pro Session ist in der Praxis ausreichend und vermeidet Probleme mit mehreren Tabs oder dem Browser-Zurück-Button
  • Token in der Session speichern: Nicht in Cookies – das würde Double-Submit-Cookie erfordern, was ein anderes Pattern ist
  • Token bei Logout invalidieren: Nach dem Logout muss die Session und damit das Token zerstört werden

CSRF-Schutz für AJAX und REST-APIs

Bei AJAX-Requests und REST-APIs funktioniert das klassische Hidden-Field nicht. Stattdessen gibt es zwei bewährte Ansätze:

MethodeBeschreibungVorteil
Custom Header (X-CSRF-Token)Token wird als HTTP-Header mitgesendetCross-Origin-Requests können keinen Custom Header setzen
Double-Submit CookieToken wird als Cookie und als Request-Parameter gesendetFunktioniert ohne serverseitige Session

Häufige Implementierungsfehler

  1. Token nur für POST-Requests prüfen, aber GET-Requests Zustandsänderungen erlauben
  2. Token-Validierung für einzelne Routen deaktivieren, weil es „nicht funktioniert"
  3. Vorhersagbare Token verwenden (z.B. Timestamps oder Nutzer-IDs)
  4. Token nicht an die Session binden, sodass Token anderer Nutzer akzeptiert werden

Lassen Sie Ihre CSRF-Implementierung im Rahmen eines Security-Reviews prüfen. Wir analysieren Ihren Code auf typische Schwachstellen. Kontaktieren Sie uns für eine Beratung.

Fazit

CSRF-Token richtig zu implementieren ist nicht schwer – aber es erfordert Sorgfalt bei den Details. Nutzen Sie die eingebauten Mechanismen Ihres Frameworks, vermeiden Sie die beschriebenen Fehler und testen Sie den Schutz regelmäßig.

Jetzt Anfragen!