Ein CSRF-Angriff zwingt einen authentifizierten Benutzer, eine ungewollte Aktion auszufuehren. Der Browser haengt automatisch Cookies an, und der Angreifer nutzt dies aus.
Wie CSRF funktioniert¶
Ein Benutzer ist bei bank.com angemeldet. Er besucht evil.com mit einem versteckten Formular, das einen POST an bank.com/transfer sendet. Der Browser haengt das Session-Cookie an.
Verteidigung: CSRF-Token + SameSite¶
CSRF-Schutz — Cross-Site Request Forgery¶
Express.js¶
const csrf = require(‘csurf’); app.use(csrf({ cookie: true }));
SameSite Cookie¶
Set-Cookie: session=abc; SameSite=Lax; Secure; HttpOnly
Moderner Ansatz¶
- SameSite=Lax ist der Standard in modernen Browsern
- CSRF-Token fuer zustandsaendernde Operationen
- API mit Bearer-Token im Authorization-Header ist immun gegen CSRF
Wichtigste Erkenntnis¶
SameSite=Lax + CSRF-Tokens fuer Formulare. API mit Bearer-Token ist gegen CSRF immun.