HTTP CSP report-uri

Die report-uri Direktive der Content Security Policy konfiguriert einen Legacy-Endpunkt für CSP-Violation-Reports mit Browserkompatibilität.

Typ

Veraltete CSP-Direktive zur Konfiguration von Violation-Reporting-Endpunkten, wird durch report-to ersetzt, bleibt aber für Rückwärtskompatibilität mit älteren Browsern relevant.

Syntax

Die Direktive akzeptiert eine URI, an die der Browser CSP-Violations als POST-Request sendet.

http
Content-Security-Policy: default-src 'self'; report-uri <uri>

Direktiven

Die report-uri Direktive akzeptiert eine einzelne URI für Legacy-Violation-Reporting.

uri
Absolute oder relative URL des Reporting-Endpunkts. Der Browser sendet Violation-Reports als application/csp-report JSON-Payload an diese URI.
Report-Only-Header
Kombiniert mit Content-Security-Policy-Report-Only Header ermöglicht risikofreies Policy-Testing ohne Blocking. Reports werden gesendet, Ressourcen aber nicht blockiert.

Beispiele

Praktische Szenarien für report-uri in Legacy-Browser-Support und Dual-Mode-Reporting-Strategien.

Legacy API mit einfachem Violation Reporting

E-Commerce-APIs nutzen report-uri für breite Browserunterstützung:

http
HTTP/1.1 200 OK
Content-Type: application/json
Content-Security-Policy: default-src 'self'; script-src 'self' https://checkout.example.com; report-uri /api/v1/csp-violations

{
  "cart": {
    "items": 3,
    "total": 149.99
  }
}

Violations werden an den relativen Endpunkt /api/v1/csp-violations gesendet, der im selben Origin liegt.

Dual-Mode Reporting für maximale Kompatibilität

Moderne APIs kombinieren report-uri und report-to für vollständige Browser-Abdeckung:

http
HTTP/2 200 OK
Content-Type: application/json
Content-Security-Policy: default-src 'self'; connect-src https://api.example.com; report-uri /csp-legacy; report-to csp-modern
Reporting-Endpoints: csp-modern="https://monitoring.example.com/csp"

{
  "status": "operational",
  "endpoints": [...]
}

Alte Browser nutzen report-uri, moderne Browser bevorzugen report-to mit strukturiertem Reporting.

Banking-API mit Report-Only Mode

Finanzapplikationen testen neue CSP-Policies ohne Blocking durch Content-Security-Policy-Report-Only:

http
HTTP/2 200 OK
Content-Type: application/json
Content-Security-Policy-Report-Only: default-src 'self'; img-src https://cdn.bank.example.com; report-uri https://security.bank.example.com/csp-reports

{
  "account": {
    "balance": 25000.00,
    "currency": "EUR"
  }
}

Violations werden reportet, aber Ressourcen nicht blockiert. Ideal für Policy-Testing in Produktion.

Legacy-Reporting-Flow

Visualisierung des klassischen report-uri Violation-Reporting-Prozesses mit synchronem POST-Request an Collector-Endpunkte.

plantuml
@startuml
actor Browser
participant "API Server" as API
participant "Malicious CDN" as Malicious
participant "CSP Report Collector" as Collector
database "Violation Log" as Log

Browser -> API: GET /api/transactions
API -> Browser: 200 OK\nCSP: default-src 'self'; report-uri /api/csp-reports
note right: Legacy reporting aktiviert

Browser -> Browser: Load inline script
Browser -> Malicious: Attempt to load https://evil.com/steal.js
Browser -> Browser: CSP blocks request\n(script-src violated)

Browser -> Browser: Create CSP report JSON
note right: Report enthält:\n- document-uri\n- violated-directive\n- blocked-uri\n- source-file\n- line-number

Browser -> Collector: POST /api/csp-reports\nContent-Type: application/csp-report\n{"csp-report": {...}}

Collector -> Log: Store violation details
Log -> Collector: Stored
Collector -> Browser: 204 No Content

Collector -> Collector: Analyze patterns
note right: Security team review:\n- Attack detection\n- Policy refinement
@enduml

Vorteile für die Systemarchitektur

Legacy-Reporting mit report-uri bietet maximale Browserkompatibilität und einfache Integration für API-Security-Monitoring.

  • Maximale Browserkompatibilität: Wird von allen Browsern mit CSP-Support verstanden einschließlich Internet Explorer 10 und älteren Mobile-Browsern
  • Einfache Integration: Keine zusätzlichen Header erforderlich, Report-URI kann relativ oder absolut angegeben werden
  • Report-Only Testing: Kombiniert mit Content-Security-Policy-Report-Only erlaubt risikofreies Testen neuer Security-Policies in Produktionsumgebungen

Spezifikation

Die report-uri Direktive ist Teil der CSP Level 2 Spezifikation:

Migration: Neue Implementierungen sollten report-to verwenden. Für maximale Kompatibilität beide Direktiven parallel einsetzen, da moderne Browser report-to bevorzugen.

Weitere Spezifikationen

CSP report-to, Content-Security-Policy Header