CSRF (Cross-Site Request Forgery), auch Session Riding oder XSRF genannt, ist eine Angriffsart, bei der ein Angreifer den Browser eines authentifizierten Nutzers dazu bringt, unbeabsichtigte Aktionen auf einer vertrauenswuerdigen Website auszufuehren. Der Angriff nutzt das Vertrauen aus, das eine Website in den Browser des Nutzers hat.
CSRF gehoert neben Cross-Site Scripting (XSS) zu den haeufigsten Web-Sicherheitsluecken und steht seit Jahren auf der OWASP Top 10. Die Gefahr ist besonders hoch bei Anwendungen, die Cookie-basierte Authentifizierung verwenden — also bei den meisten klassischen Webanwendungen.
Wie ein CSRF-Angriff funktioniert
Das Grundprinzip
- Der Nutzer meldet sich bei seiner Bank-Website an (bank.de)
- Der Browser speichert einen Session-Cookie fuer bank.de
- Der Nutzer besucht eine manipulierte Website (boese-seite.de)
- Diese Seite enthaelt ein verstecktes Formular oder Bild, das eine Anfrage an bank.de ausloest
- Der Browser sendet die Anfrage an bank.de — inklusive des Session-Cookies
- bank.de erhaelt eine authentifizierte Anfrage und fuehrt sie aus
Angriffsbeispiele
| Methode | Beschreibung | Sichtbar fuer Nutzer |
|---|---|---|
| Unsichtbares Bild | <img src="bank.de/transfer?to=angreifer&amount=1000"> | Nein |
| Verstecktes Formular | Auto-Submit Formular per JavaScript | Nein |
| Manipulierter Link | Link mit eingebetteter Aktion | Teilweise |
Voraussetzungen fuer CSRF
- Der Nutzer ist bei der Zielseite authentifiziert
- Die Zielseite verwendet Cookie-basierte Authentifizierung
- Der Angreifer kennt die Struktur der HTTP-Anfrage
- Es gibt keine CSRF-Schutzmechanismen
Schutzmassnahmen
CSRF-Token (Synchronizer Token Pattern)
Die effektivste Methode: Der Server generiert ein einmaliges, zufaelliges Token und bettet es in jedes Formular ein. Bei der Formularuebermittlung validiert der Server, dass das Token vorhanden und korrekt ist. Da der Angreifer das Token nicht kennt, kann er keine gueltige Anfrage konstruieren.
| Eigenschaft | Anforderung |
|---|---|
| Zufaelligkeit | Kryptographisch sicherer Zufallsgenerator |
| Einmaligkeit | Pro Sitzung oder pro Anfrage |
| Geheimhaltung | Darf nur dem Server und dem legitimen Client bekannt sein |
| Validierung | Serverseitige Pruefung bei jeder State-aendernden Anfrage |
SameSite-Cookie-Attribut
Das SameSite-Attribut kontrolliert, wann Cookies bei Cross-Site-Anfragen mitgesendet werden:
| Wert | Verhalten | CSRF-Schutz |
|---|---|---|
Strict | Cookie wird nie bei Cross-Site-Anfragen gesendet | Stark |
Lax | Cookie wird nur bei Top-Level-Navigationen gesendet (GET) | Mittel |
None | Cookie wird immer gesendet (erfordert Secure) | Kein Schutz |
Moderne Browser setzen SameSite=Lax als Standard — ein grosser Fortschritt fuer die CSRF-Sicherheit.
Origin- und Referer-Validierung
Der Server kann pruefen, ob der Origin- oder Referer-Header der Anfrage mit der eigenen Domain uebereinstimmt. Cross-Site-Anfragen haben einen fremden Origin-Header.
Double Submit Cookie
Eine Alternative zum serverseitigen Token: Das CSRF-Token wird sowohl als Cookie als auch als Request-Parameter gesendet. Der Server vergleicht beide Werte. Da ein Angreifer das Cookie zwar mitsenden, aber nicht auslesen kann, kann er den Parameterwert nicht setzen.
CSRF in modernen Frameworks
Next.js und React
In Next.js- und React-Anwendungen, die REST-APIs oder Server Actions nutzen:
- Server Actions: Next.js generiert automatisch CSRF-Tokens fuer Server Actions
- API Routes mit Cookie-Auth: Manueller CSRF-Schutz noetig
- Token-basierte APIs (JWT): CSRF ist kein Risiko, da Tokens im Header gesendet werden
Formulare auf Websites
Fuer klassische Formulare auf Webdesign-Projekten gelten die gleichen Prinzipien: Jedes Formular, das Daten an den Server sendet, benoetigt CSRF-Schutz. Kontaktformulare, Newsletter-Anmeldungen und Login-Formulare sind typische Angriffsziele.
CSRF und DSGVO
CSRF-Schutz ist auch aus DSGVO-Perspektive relevant. Wenn ein Angreifer durch CSRF unbefugt Daten eines Nutzers aendert oder abfragt, liegt eine Sicherheitsverletzung vor, die meldepflichtig sein kann. Technische Schutzmassnahmen gegen CSRF gehoeren daher zu den "angemessenen technischen Massnahmen" nach Art. 32 DSGVO.
Zusammenspiel mit anderen Sicherheitsmassnahmen
CSRF-Schutz ist ein Baustein im Gesamtkonzept der Web-Sicherheit. Er ergaenzt sich mit:
- XSS-Schutz: XSS kann CSRF-Tokens auslesen — daher muessen beide Angriffstypen adressiert werden
- CORS: Kontrolliert, welche Origins Anfragen senden duerfen
- Content Security Policy: Verhindert das Laden von Schadcode
- HTTPS/HSTS: Schuetzt Tokens vor Abfangen im Netzwerk