- 1 Section
- 10 Lessons
- unbegrenzt
- Sichere Softwareentwicklung (Secure Coding)10
CSRF verhindern
CSRF – Cross-Site Request Forgery ist ein Angriff, der die Identität eines eingeloggten Nutzers missbraucht, ohne seine Zugangsdaten zu kennen. Der Browser sendet automatisch Cookies mit jeder Anfrage an eine Domain – auch wenn die Anfrage von einer fremden Seite ausgelöst wird. Ein Angreifer kann eine Seite bauen, die im Hintergrund eine Aktion auf einer anderen Website auslöst, für die das Opfer eingeloggt ist.
Das Tückische: Das Opfer muss nichts „tun" – es reicht, eine präparierte Seite zu besuchen. Kein Download, kein aktives Eingreifen. Der Browser erledigt den Rest, weil er die Cookies des Opfers automatisch mitschickt. Ein klassisches Beispiel: Das Opfer ist bei seiner Bank eingeloggt und besucht gleichzeitig eine bösartige Seite, die im Hintergrund eine Überweisung auslöst.
1) Angriffs-Simulation: CSRF ohne Schutz
Die folgende Animation zeigt den Ablauf eines CSRF-Angriffs Schritt für Schritt – zuerst ohne Schutz, dann mit CSRF-Token. Beobachte, wie der Browser die Session-Cookies automatisch mitschickt.
session=abc123 im Browser gespeicherteingeloggt<img src="bank.de/transfer?to=hacker&amount=1000">wartend2) Schutz: CSRF-Token
Die wichtigste Schutzmaßnahme ist der CSRF-Token: Ein zufälliger, unvorhersehbarer Wert, der bei der Formular-Generierung serverseitig erzeugt wird, im Formular als verstecktes Feld eingebettet ist, und bei Submission serverseitig verifiziert wird. Der Angreifer auf evil.de kennt diesen Token nicht – er kann nicht auf den HTML-Code von bank.de zugreifen (Same-Origin Policy).
<form action="/transfer"
method="POST">
<input name="to" value="Anna">
<input name="amount" value="100">
<button>Überweisen</button>
</form>
<!-- Angreifer kann dies
von jeder Seite senden! -->
<form action="/transfer"
method="POST">
<input name="to" value="Anna">
<input name="amount" value="100">
<input type="hidden"
name="csrf_token"
value="aX9k2mP7...">
<button>Überweisen</button>
</form>
3) Weitere Schutzmaßnahmen
CSRF vs. XSS – Unterschied
| CSRF | XSS | |
|---|---|---|
| Ziel | Aktionen im Namen des Opfers ausführen | Code im Browser des Opfers ausführen |
| Angreifer kontrolliert | Die gesendete Anfrage (nicht die Antwort) | Den ausgeführten JavaScript-Code |
| Opfer muss | Eingeloggt sein und präparierte Seite besuchen | Seite mit eingeschleustem Code aufrufen |
| Primärer Schutz | CSRF-Token, SameSite-Cookie | Output-Encoding, CSP |
Zusammenfassung
CSRF missbraucht den Browser des Opfers als Proxy für unerwünschte Aktionen – der Cookie wird automatisch mitgeschickt. Schutz: CSRF-Token (Server-generierter Zufallswert im Formular, serverseitig verifiziert), SameSite-Cookie-Attribut (Strict oder Lax), Origin-Header prüfen, Re-Authentifizierung für kritische Aktionen. Verwandte Themen: XSS, Security Headers und CSP.
