CSRF
Cross-Site-Request-Forgery
Entsprechender Fehler
„Der Server ist durch Request-Forgery-Angriffe gefährdet. Fügen Sie jeder Anfrage ein CSRF-Token oder ein SameSite-Cookie-Attribut hinzu.“
Problem
Eine Cross-Site-Request-Forgery (CSRF) ist ein Angriff, der den Benutzer dazu veranlasst, unbeabsichtigt eine Anfrage an eine Webanwendung zu senden, gegenüber der er authentifiziert ist. CSRF-Angriffe nutzen das Vertrauen aus, das eine Webanwendung in einen authentifizierten Benutzer hat.
CSRF-Angriffe sind oft gezielt und nutzen Social-Engineering, wie z.B.:
Phishing-E-Mail
Chat-Link
Fake-Alarm
Wenn sich ein Benutzer bei einer Webanwendung anmeldet, fordert der Angreifer ihn auf, auf eine URL zu klicken, die eine nicht autorisierte Anfrage für eine bestimmte Webanwendung enthält. Der Browser des Benutzers sendet dann diese bösartig gestaltete Anfrage an eine gezielte Webanwendung, einschließlich Sitzungsinformationen wie Sitzungscookies oder gespeicherte Anmeldedaten. Wenn sich der Benutzer in einer aktiven Sitzung mit einer gezielten Webanwendung befindet, wird die Anwendung diese neue Anfrage als eine vom Benutzer initiierte autorisierte Anfrage verarbeiten. Dadurch kann der Angreifer die CSRF-Schwachstelle der Webanwendung ausnutzen.
Das Ausmaß des Angriffs hängt von den Berechtigungen ab, über die das Opfer verfügt. Bei einem CSRF-Angriff wird nicht direkt die Identität des Benutzers gestohlen, sondern der Benutzer wird ausgenutzt, um Aktionen ohne seinen Willen auszuführen.
Ein erfolgreicher CSRF-Angriff zwingt den Benutzer, eine zustandsändernde Anfrage auszuführen, wie z.B.:
Kennwort ändern
E-Mail-Adresse ändern
Datensätze ändern oder löschen
Übertragung von Mitteln
Käufe
Lösung
Um einen CSRF-Angriff zu verhindern:
Verwenden Sie CSRF-Token für alle Anforderungen, die den Status ändern.
Ein CSRF-Token, auch bekannt als Synchronizer-Token oder Challenge-Token, ist ein eindeutiger und geheimer Wert, der auf der Client-Seite für jede Benutzersitzung generiert wird und es unmöglich macht, den Benutzer zu hacken und auszutricksen.
Verwenden Sie das SameSite-Cookie-Attribut für Sitzungs-Cookies
Setzen Sie das SameSite-Attribut für Cookies als zusätzliche Schutzschicht zusammen mit dem CSRF-Token. Das SameSite-Attribut ermöglicht das Senden von Cookies nur dann, wenn das Cookie und die Anfrage aus derselben Domäne stammen (und nicht aus einer anderen Domäne)
Anmerkung
Ältere Browser unterstützen möglicherweise das SameSite-Cookie nicht.