HTTP CSP report-to

Die report-to Direktive der Content Security Policy konfiguriert moderne, gruppenbasierte Violation-Reports mit strukturiertem JSON-Reporting.

Typ

CSP-Direktive zur Konfiguration von gruppenbasiertem Violation-Reporting durch Referenzierung von Reporting-Groups für zentralisiertes Security-Monitoring in REST APIs.

Syntax

Die Direktive referenziert eine Reporting-Group, die im separaten Reporting-Endpoints Header definiert wird.

http
Content-Security-Policy: default-src 'self'; report-to <group-name>
Reporting-Endpoints: <group-name>="<endpoint-url>"

Direktiven

Die report-to Direktive nutzt benannte Reporting-Groups für flexibles Multi-Endpoint-Monitoring.

group-name
Identifikator der Reporting-Group, die im Reporting-Endpoints Header konfiguriert ist. Ermöglicht Gruppierung verschiedener Security-Reports (CSP, COOP, COEP) an denselben Endpunkt.
Reporting-Endpoints-Header
Separater HTTP-Header der die Reporting-Group-Namen auf konkrete Endpunkt-URLs mappt. Unterstützt multiple Groups für verschiedene Umgebungen oder Mandanten.

Beispiele

Praktische Szenarien für report-to in modernen API-Monitoring-Architekturen mit Reporting API Integration.

API Gateway mit zentralem Security Monitoring

Moderne API-Infrastrukturen sammeln alle CSP-Violations in einem zentralen SIEM-System:

http
HTTP/2 200 OK
Content-Type: application/json
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; report-to security-monitoring
Reporting-Endpoints: security-monitoring="https://siem.example.com/api/v1/csp-reports"

{
  "api_version": "2.1",
  "endpoints": [...]
}

Bei CSP-Violations sendet der Browser automatisch POST-Requests mit JSON-Payload an das SIEM-System.

Microservice mit Multi-Environment Reporting

Entwicklungs- und Produktionsumgebungen nutzen unterschiedliche Reporting-Endpunkte:

http
HTTP/2 200 OK
Content-Type: application/json
Content-Security-Policy: default-src 'self'; connect-src https://api.example.com; report-to csp-prod
Reporting-Endpoints: csp-prod="https://monitor-prod.example.com/csp", csp-dev="https://monitor-dev.example.com/csp"
X-Environment: production

{
  "service": "payment-gateway",
  "status": "healthy"
}

Die Produktionsumgebung reportet an monitor-prod.example.com, während Dev-Deployments die zweite Gruppe nutzen würden.

SaaS-Plattform mit Mandantenfähigem Reporting

Multi-Tenant-APIs routen CSP-Reports zu kundenspezifischen Monitoring-Dashboards:

http
HTTP/2 200 OK
Content-Type: application/json
Content-Security-Policy: default-src 'self'; img-src https://cdn.example.com; report-to tenant-reports
Reporting-Endpoints: tenant-reports="https://reports.example.com/api/tenant/acme-corp/csp"
X-Tenant-ID: acme-corp

{
  "tenant": "acme-corp",
  "dashboard_url": "/dashboard"
}

Reports enthalten automatisch den Tenant-Kontext durch die URL-Struktur des Reporting-Endpunkts.

Violation-Reporting-Flow

Visualisierung des modernen gruppenbasierten Reporting-Prozesses mit asynchronem JSON-Versand an SIEM-Systeme.

plantuml
@startuml
actor Browser
participant "API Gateway" as Gateway
participant "CDN (Blocked)" as CDN
participant "SIEM System" as SIEM
database "Report Store" as Store

Browser -> Gateway: GET /api/data
Gateway -> Browser: 200 OK\nCSP: report-to security-monitoring\nReporting-Endpoints: security-monitoring="https://siem.example.com/reports"
note right: Policy mit Reporting konfiguriert

Browser -> Browser: Execute JavaScript
Browser -> CDN: Fetch https://malicious.com/script.js
Browser -> Browser: CSP violation detected\n(connect-src blocks external domain)

Browser -> Browser: Queue violation report
note right: Report JSON erstellt:\n- violated-directive\n- blocked-uri\n- document-uri

Browser -> SIEM: POST /reports\nContent-Type: application/reports+json
note right: Asynchroner Report-Versand

SIEM -> Store: Store violation data
Store -> SIEM: Stored
SIEM -> Browser: 204 No Content

SIEM -> SIEM: Trigger alert if threshold exceeded
note right: Security team notification
@enduml

Vorteile für die Systemarchitektur

Modernes gruppenbasiertes Reporting verbessert Security-Monitoring und Performance in API-Architekturen durch strukturiertes JSON-Format.

  • Modernes Reporting-Format: Ersetzt das veraltete report-uri durch strukturiertes JSON mit standardisiertem Schema gemäß Reporting API Spezifikation
  • Gruppenbasiertes Monitoring: Ermöglicht zentrale Reporting-Endpunkte für verschiedene Security-Policies durch gemeinsame Reporting-Groups
  • Performance-Optimierung: Browser batchen Reports und senden sie asynchron ohne die API-Response-Performance zu beeinträchtigen

Spezifikation

Die report-to Direktive nutzt die moderne Reporting API:

Wichtig: report-to ersetzt report-uri. Für Browserkompatibilität sollten beide Direktiven parallel verwendet werden, wobei moderne Browser report-to bevorzugen.

Weitere Spezifikationen

Report-To Header, Content-Security-Policy Header