Zum Inhalt springen

Cross-Site Request Forgery (CSRF)

Bei CSRF wird eine angemeldete Sitzung für eine unerwünschte Anfrage ausgenutzt. Das Sitzungscookie allein belegt keinen beabsichtigten Auftrag.

Auch bekannt alsCSRFXSRF
IT-Sicherheit

Cross-Site Request Forgery, kurz CSRF oder XSRF, ist ein Angriff, bei dem eine fremde Website den Browser zu einer unerwünschten Anfrage an eine Zielanwendung veranlasst. Sendet der Browser dabei automatisch gültige Anmeldedaten mit und fehlt ein geeigneter Schutz, kann die Anwendung die Anfrage als Auftrag der angemeldeten Person behandeln.

Eine Änderung im Projektportal

Ein fiktives Projektportal erlaubt es, die Adresse für Benachrichtigungen im Feld notificationEmail zu ändern. Eine Person ist dort angemeldet und besucht zusätzlich eine fremde Seite. Diese versucht, die Änderung auszulösen. Ob das Sitzungscookie mitgesendet wird, hängt unter anderem von den Cookie-Regeln des Browsers ab.

Das Prüfen eines gültigen Sitzungscookies beantwortet, welcher Sitzung die Anfrage zugeordnet wird. Es belegt nicht, dass die Person diese Adressänderung beabsichtigt hat. Auch die Verwendung von POST allein verhindert den Angriff nicht.

Schutz für zustandsändernde Anfragen

Für ein Formular kann das Framework ein nicht vorhersagbares, an die Sitzung gebundenes CSRF-Token bereitstellen. Der Server prüft dieses zusätzliche Merkmal vor der Änderung. Die Schutzfunktion muss für die betreffenden Anfragen tatsächlich verwendet werden.

MDN beschreibt außerdem Prüfungen anhand von Fetch-Metadaten, also Browserangaben zum Kontext einer Anfrage, und andere Verfahren passend zum Anfragetyp. Das Cookie-Attribut SameSite ist eine zusätzliche Schutzschicht. Dabei sind dieselbe Site und derselbe Origin (Protokoll, Hostname und Port) nicht gleichbedeutend; verschiedene Subdomains können zur selben Site gehören. Ein gültiges CSRF-Token ersetzt zudem nicht die Prüfung, ob die angemeldete Person die Adresse ändern darf.

Quellen