FlawOpen

flawopen.com/CSRF/GET-Anfragen

CSRF-Token bei GET: Wann ist es nötig?

Referenzseite
Kurzantwort

Ruft GET nur Daten ab, sollte der Serverzustand unverändert bleiben; normalerweise ist dann kein CSRF-Token nötig. Browser, Crawler, Vorschauen und eingebettete Ressourcen können GET ohne bewussten Klick auslösen. Verwende für Aktionen wie Löschen oder Kaufen eine unsichere Methode und schütze cookie-authentifizierte Änderungen vor CSRF. Ein alter GET-Endpunkt mit Zustandsänderung bleibt verwundbar und braucht während der Migration einen vorübergehenden Schutz.

Warum GET sicher bleiben muss

RFC 9110 definiert GET als sicher: Der Client fordert keine Zustandsänderung an. Sicher bedeutet nicht, dass der Server keine beiläufigen Effekte wie Protokollierung hat. GET ist außerdem idempotent, aber das ist eine andere Eigenschaft. Browser, Prefetching, Crawler und Link-Vorschauen können sichere Anfragen ohne bewusste Benutzeraktion senden. Ein fremdes <img src="..."> kann den Browser ebenfalls veranlassen, GET samt Benutzer-Cookies zu senden. Löscht oder ändert der Endpunkt Daten, verletzt er die GET-Semantik und normaler Seiteninhalt kann die Aktion auslösen.

CSRF-Schutz für zustandsändernde Anfragen einsetzen

Häufige Fragen zu CSRF-Tokens bei GET

Was ist mit alten zustandsändernden GET-Endpunkten?

Behandle sie als verwundbar. Verlange vorübergehend serverseitig validierten CSRF-Schutz (zum Beispiel Synchronizer-Token plus Origin- oder Fetch-Metadata-Prüfung, sofern unterstützt), prüfe Caches und Referer und migriere die Aktion zu POST, PUT, PATCH oder DELETE. Vermeide Tokens in Query-Strings: URLs können im Verlauf, in Logs und in Referer-Daten auftauchen. Die Tokenprüfung ist nur eine Übergangslösung, bis der Endpunkt sichere Methodensemantik einhält.

Quellen

Siehe auch Cross-Site Request Forgery (CSRF, CWE-352): Funktionsweise und Schutz — flawopen.com JWT im localStorage vs. HttpOnly-Cookies: Was ist sicherer? — flawopen.com Next.js Server Actions: CSRF und Origin Ersetzt SameSite=Strict CSRF-Token?