HTTP Sec-Fetch-Site Header

Der HTTP-Header Sec-Fetch-Site ist ein Request-Header aus der Fetch Metadata API, der die Beziehung zwischen Request-Initiator und Ziel-Origin übermittelt. Er unterscheidet zwischen same-origin, same-site, cross-site und none, essentiell für CSRF-Protection und Cross-Site-Request-Filtering.

Typ

Request-Header

Syntax

Der Header gibt die Origin-Beziehung als einfachen String-Wert an.

http
Sec-Fetch-Site: same-origin
Sec-Fetch-Site: cross-site

Direktiven

Die Direktiven definieren die Beziehung zwischen initiierender und Ziel-Origin.

same-origin
Request von exakt gleicher Origin (Schema, Host, Port). Beispiel: https://example.com zu https://example.com. Niedrigstes CSRF-Risiko.
same-site
Request von gleicher Site aber unterschiedlicher Subdomain. Beispiel: https://app.example.com zu https://api.example.com. Teilt eTLD+1.
cross-site
Request von komplett anderer Site. Beispiel: https://attacker.com zu https://victim.com. Höchstes CSRF-Risiko.
none
Request ohne Initiator-Context. Browser-direkter Request (URL-Eingabe, Bookmark) oder Extensions. Kein Referer.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für den Sec-Fetch-Site-Header.

Beispiel 1 Same-Origin API Request

http
POST /api/profile HTTP/1.1
Host: app.example.com
Origin: https://app.example.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Content-Type: application/json

{"name": "Max"}

Fetch API von gleicher Origin, Server akzeptiert ohne zusätzliche CSRF-Token-Prüfung da same-origin als sicher gilt.

Beispiel 2 Cross-Site CSRF Attack Detection

http
POST /api/transfer HTTP/1.1
Host: bank.example.com
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Content-Type: application/x-www-form-urlencoded

to=attacker&amount=1000

HTTP/1.1 403 Forbidden
X-Content-Type-Options: nosniff

Cross-site state-changing requests not allowed

CSRF-Attack von evil.com wird durch cross-site + navigate Kombination erkannt, Server blockt ohne Token-Check.

Beispiel 3 Same-Site Subdomain Request

http
GET /api/shared HTTP/1.1
Host: api.example.com
Origin: https://app.example.com
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://app.example.com
Vary: Origin

Same-Site Request zwischen Subdomains, Server erlaubt nach CORS-Check da gleiche eTLD+1, aber validiert explizit Origin.

Site Context Validation Flow

Sec-Fetch-Site CSRF Protection Ablauf

Vorteile für die Systemarchitektur

  • Simplified CSRF Defense: Resource Isolation Policy basierend auf Sec-Fetch-Site reduziert Token-Management-Overhead für viele Endpoints
  • Subdomain Security: same-site erkennt Subdomain-Requests, ermöglicht differenzierte Policies zwischen Subdomains trotz Shared-Cookie-Domain
  • Zero-Trust Architecture: Selbst same-origin Requests können zusätzlich validiert werden, unterstützt Defense-in-Depth-Strategie

Spezifikation

Fetch Metadata Request Headers https://www.w3.org/TR/fetch-metadata/

Weitere Spezifikationen

Sec-Fetch-Mode Header, Sec-Fetch-User Header