HTTP Sec-Fetch-Dest Header

Der HTTP-Header Sec-Fetch-Dest ist ein Request-Header aus der Fetch Metadata API, der den Destination-Type der Anfrage übermittelt. Er zeigt, wie die angeforderte Ressource vom Browser verwendet wird (document, script, image etc.) und ist essentiell für CSRF und XS-Leaks Protection.

Typ

Request-Header

Syntax

Der Header gibt den Destination-Type als einfachen String-Wert an.

http
Sec-Fetch-Dest: document
Sec-Fetch-Dest: script

Direktiven

Die Direktiven definieren den Verwendungszweck der angeforderten Ressource im Browser.

document
Anfrage ist für ein Top-Level-Document (Navigation). Nutzer klickt Link oder gibt URL ein. Höchstes CSRF-Risiko.
iframe
Ressource wird in iframe eingebettet. Ermöglicht Clickjacking-Detection wenn nicht erwünscht.
script
JavaScript-Resource für <script>-Tag. JSONP-Endpoints sollten nur script-Requests akzeptieren.
image
Bild für <img>-Tag. Hot-Linking-Protection kann Non-Image-Requests blocken.
empty
Fetch API oder XHR-Request ohne spezifisches Destination. Typisch für AJAX-Requests.
style
CSS-Stylesheet für <link rel="stylesheet">. Verhindert CSS-Injection-Attacks.
font
Web-Font-Download. Kann für CORS-Policies und Hot-Linking-Protection genutzt werden.

Beispiele

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

Beispiel 1 CSRF Protection fuer Document Requests

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

{"to": "attacker", "amount": 1000}

Legitimer AJAX-Request hat Sec-Fetch-Dest: empty. CSRF-Attack via <form> hätte Sec-Fetch-Dest: document, Server kann ablehnen.

Beispiel 2 Iframe Embedding Prevention

http
GET /admin/dashboard HTTP/1.1
Host: app.example.com
Sec-Fetch-Dest: iframe
Sec-Fetch-Site: cross-site

HTTP/1.1 403 Forbidden
X-Frame-Options: DENY
Content-Type: text/plain

Iframe embedding from cross-site origin not allowed

Server erkennt Cross-Site Iframe-Embedding-Versuch, blockt Request mit 403 zur Clickjacking-Prevention.

Beispiel 3 Image Hot-Linking Protection

http
GET /images/logo.png HTTP/1.1
Host: cdn.example.com
Sec-Fetch-Dest: image
Sec-Fetch-Site: cross-site
Referer: https://evil.com

HTTP/1.1 403 Forbidden

Hot-linking blocked

Server prüft Destination: image plus Cross-Site Referer, blockt Bandbreiten-Diebstahl durch fremde Websites.

Fetch Metadata Protection Flow

Sec-Fetch-Dest CSRF Protection Ablauf

Vorteile für die Systemarchitektur

  • Defense-in-Depth CSRF Protection: Ergänzt CSRF-Tokens durch Server-seitige Context-Validation, funktioniert auch ohne Token-Implementation
  • XS-Leaks Mitigation: Verhindert Cross-Site Information Leaks durch Timing-Attacks auf resource-loading basierend auf Destination-Type
  • Resource Isolation: APIs können gezielt nur bestimmte Destinations akzeptieren, z.B. JSON-API nur für empty (Fetch/XHR), nicht für script (JSONP)

Spezifikation

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

Weitere Spezifikationen

Sec-Fetch-Mode Header, Sec-Fetch-Site Header