HTTP CSP prefetch-src

Die prefetch-src Direktive der Content Security Policy kontrolliert, welche Ressourcen vom Browser spekulativ vorab geladen werden dürfen.

Typ

CSP-Direktive zur Kontrolle von Ressourcen-Prefetching und Prerendering für Sicherheit gegen Timing-Attacken und unerwünschten Datenabruf in REST APIs.

Syntax

Die Direktive akzeptiert eine whitespace-getrennte Liste von Quellen, die Prefetch- und Prerender-Operationen durchführen dürfen.

http
Content-Security-Policy: prefetch-src <source-list>

Direktiven

Die prefetch-src Direktive kontrolliert spekulatives Laden durch Whitelisting erlaubter Ressourcenquellen.

source-list
Definiert erlaubte Quellen für spekulatives Laden. Unterstützt alle Standard-CSP-Quellausdrücke wie 'self', 'none', URLs und Wildcards. Falls nicht angegeben, fällt die Direktive auf default-src zurück.
'none'
Blockiert alle Prefetch- und Prerender-Operationen vollständig. Ideal für sicherheitskritische APIs, die keine spekulativen Requests erlauben möchten.

Beispiele

Praktische Anwendungsfälle für prefetch-src in modernen API-Architekturen und Single-Page Applications.

API-Endpunkt mit Prefetch-Kontrolle

Moderne Single-Page Applications nutzen Link-Prefetching für API-Responses. Diese Direktive verhindert, dass Angreifer über manipulierte Prefetch-Hints Timing-Informationen extrahieren:

http
HTTP/2 200 OK
Content-Type: application/json
Content-Security-Policy: prefetch-src 'self' https://api.example.com
Link: </api/next-page>; rel=prefetch

{
  "products": [...],
  "pagination": {
    "next": "/api/next-page"
  }
}

Der Browser darf nur Ressourcen von der eigenen Domain und api.example.com vorab laden.

Microservice mit deaktiviertem Prefetching

Sensible Banking-APIs deaktivieren spekulatives Laden vollständig, um Timing-Leaks zu vermeiden:

http
HTTP/2 200 OK
Content-Type: application/json
Content-Security-Policy: prefetch-src 'none'; default-src 'self'

{
  "account": {
    "balance": 15000.00,
    "iban": "DE89370400440532013000"
  }
}

Alle Prefetch- und Prerender-Operationen werden blockiert, unabhängig von Link-Headers oder HTML-Hints.

Content-Delivery mit Multi-CDN Prefetch

E-Commerce-APIs erlauben Prefetching von mehreren CDN-Providern für optimale Performance:

http
HTTP/2 200 OK
Content-Type: application/json
Content-Security-Policy: prefetch-src 'self' https://cdn1.example.com https://cdn2.example.com
Link: </api/product/12345>; rel=prefetch
Link: <https://cdn1.example.com/images/product-12345.jpg>; rel=prefetch

{
  "recommendations": [
    {"id": 12345, "name": "Widget Pro"}
  ]
}

Beide CDN-Domains sind für spekulatives Laden autorisiert.

Prefetch-Kontrolle-Flow

Visualisierung des Prefetch-Validierungsprozesses und CSP-Enforcement in Browser-Architekturen.

plantuml
@startuml
actor Browser
participant "Web Server" as Server
participant "API Gateway" as Gateway
database "Resource Store" as Store

Browser -> Server: GET /dashboard
Server -> Browser: HTML + CSP: prefetch-src 'self' https://api.example.com
note right: Prefetch policy definiert

Browser -> Browser: Parse Link rel=prefetch
Browser -> Browser: Check CSP prefetch-src
alt Allowed origin
    Browser -> Gateway: GET /api/next-page (prefetch)
    Gateway -> Store: Fetch data
    Store -> Gateway: Data response
    Gateway -> Browser: 200 OK (cached)
    note right: Resource im Cache
else Blocked origin
    Browser -> Browser: Block prefetch request
    note right: CSP violation\nKein Netzwerk-Request
end

Browser -> Browser: User navigates to next page
Browser -> Browser: Serve from prefetch cache (if allowed)
@enduml

Vorteile für die Systemarchitektur

Optimierte Prefetch-Strategien ermöglichen Performance-Verbesserungen ohne Security-Kompromisse in API-getriebenen Webanwendungen.

  • Performance-Optimierung mit Sicherheit: Erlaubt strategisches Prefetching von vertrauenswürdigen Quellen ohne Sicherheitsrisiken durch malicious Prefetch-Hints
  • Timing-Attack-Prävention: Verhindert Extraktion von Timing-Informationen über API-Verfügbarkeit oder Datenstrukturen durch manipulierte Prefetch-Links
  • CDN-Strategie-Enforcement: Erzwingt die Nutzung autorisierter Content-Delivery-Networks und verhindert unerwünschtes Prefetching von Drittanbieter-Ressourcen

Spezifikation

Die prefetch-src Direktive ist Teil der Content Security Policy Level 3 Spezifikation:

Die Direktive kontrolliert sowohl <link rel="prefetch"> als auch <link rel="prerender"> sowie programmatisches Prefetching via Fetch API mit entsprechenden Hints.

Weitere Spezifikationen

CSP connect-src Directive, Content-Security-Policy Header