CSRF (Cross-Site-Request-Forgery)
Definition
Cross-Site-Request-Forgery (CSRF) ist ein Angriff, bei dem ein Angreifer einen authentifizierten Benutzer dazu bringt, unbeabsichtigt schädliche Aktionen auf einer Webanwendung auszuführen, bei der er eingeloggt ist. Der Angriff nutzt das Vertrauen der Anwendung in den authentifizierten Browser des Nutzers aus. Typische Angriffsziele sind Passwortänderungen, Geldüberweisungen oder andere zustandsändernde Aktionen.
Erläuterung
CSRF-Angriffe funktionieren, weil Browser automatisch Session-Cookies und Credentials mitsenden, wenn eine Anfrage an eine bestimmte Domain gestellt wird – unabhängig davon, ob diese Anfrage von der legitimen Seite oder einer bösartigen Drittseite stammt. Die wichtigste Gegenmaassnahme ist das CSRF-Token: Ein eindeutiger, schwer erratbarer Wert wird in Formulare eingebettet und serverseitig validiert – fehlende oder falsche Tokens werden abgelehnt. Der SameSite-Cookie-Attribut (Strict oder Lax) verhindert, dass Cookies bei Cross-Site-Anfragen mitgesendet werden und bietet guten CSRF-Schutz bei modernen Browsern. Moderne Web-Frameworks wie Django, Laravel, Spring Security und ASP.NET Core haben eingebauten CSRF-Schutz, der standardmässig aktiviert ist. REST-APIs sind generell weniger CSRF-anfällig, wenn sie Token-basierte Authentifizierung (JWT) statt Cookie-basierter Session-Authentifizierung verwenden.
SameSite=Strict-Attribut, es sei denn, Cross-Site-Requests sind aus legitimen Gründen notwendig.