ADR 015 csrf schutz strategie - smart-village-solutions/sva-studio GitHub Wiki
Status: Accepted
Entscheidungsdatum: 2026-03-04
Entschieden durch: IAM/Auth + Frontend
Mit der Einführung mutierender IAM-v1-Endpunkte (POST, PATCH, DELETE) für User- und Rollenverwaltung muss ein einheitlicher, pragmatischer CSRF-Schutz umgesetzt werden.
Session-basierte Authentifizierung mit Cookies (SameSite=Lax) reduziert Risiken, ist jedoch allein nicht ausreichend für alle Browser-/Embed-Szenarien.
Wir erzwingen für alle mutierenden IAM-v1-Endpunkte zusätzlich den Header:
X-Requested-With: XMLHttpRequest
Serverseitig wird dieser Header strikt validiert. Fehlt er oder ist er ungültig, antwortet der Endpoint mit csrf_validation_failed.
- Niedriger Implementierungsaufwand in API und UI.
- Gute Kompatibilität mit bestehenden Fetch-basierten Clients.
- Ergänzt
SameSite=Laxum eine explizite Request-Herkunftsprüfung.
- Alle mutierenden IAM-Requests nutzen zentrale API-Utilities mit verpflichtendem CSRF-Header.
- Keine Endpoint-Ausnahme ohne dokumentierte Freigabe.
- Fehler dürfen keine sensitiven Details preisgeben.
- Vorteil: Höchste Sicherheit bei klassischer Form-basierten Angriffsfläche.
- Nachteil: Zusätzlicher State- und Lifecycle-Aufwand im aktuellen Stack.
- Ergebnis: vorerst verworfen.
- Vorteil: minimaler Aufwand.
- Nachteil: Schutzgrad für einige Angriffs-/Embedding-Fälle unzureichend.
- Ergebnis: verworfen.
- Einheitlicher CSRF-Mechanismus über alle IAM-v1-Writes.
- Einfach testbar auf API- und E2E-Ebene.
- Externe Clients müssen den Header explizit setzen.
ADR-009-keycloak-als-zentraler-identity-provider.mdADR-016-idp-abstraktionsschicht.md