Zum Hauptinhalt springen
EU-Websicherheit: 10 Schritte zu einem besseren Rating · Teil 11

Ein eingebauter CSP-Report-Endpoint für jeden Monitor

Eingebauter CSP-Reporting-API-Endpoint: nimmt Browser-Meldungen entgegen, aggregiert sie, alarmiert auf Drift. In jedem Plan enthalten, EU-gehostet, DSGVO-konform.

· SiteGuardian

Wer in Produktion eine Content-Security-Policy fährt, hat ein Telemetrieproblem. Browser blockieren still und leise Skripte, Bilder und Stylesheets, die gegen eure Policy verstoßen — ohne report-uri oder Reporting-Endpoints erfahrt ihr davon nichts. Und selbst wenn: Ihr braucht einen Endpoint, der die Reports annimmt, Dubletten zusammenfasst und euch das Signal liefert.

Einen eigenen Endpoint zu betreiben ist machbar, aber nicht trivial — Request-Parsing, Dedup, Retention, Missbrauchsschutz, UI. Die meisten Teams lagern das an einen Spezialanbieter aus.

Ab v1.12 kann jeder SiteGuardian-Monitor sein eigener CSP-Report-Endpoint sein — im bestehenden Plan enthalten, vollständig EU-gehostet und an dieselben Alarmregeln angebunden, die ihr ohnehin schon nutzt.

Was ihr bekommt

  1. HMAC-signierte URL pro Monitor — https://reports.siteguardian.io/r/{monitor_id}/{token}. Einfach in den Content-Security-Policy: report-uri …-Header einsetzen (oder das moderne Reporting-Endpoints/Report-To-Paar). Beide Formate werden unterstützt.
  2. Aggregation statt Feuerwerk. Eine falsch konfigurierte CSP kann uns aus einem einzigen Browser-Tab mit Millionen Reports fluten. Wir gruppieren nach (directive, blocked_uri, source_file) und speichern Buckets — aus 1 Mio. Rohreports wird eine Zeile mit Count, drei Samples und Browser-Breakdown.
  3. DSGVO by design. Client-IPs werden mit täglich rotierendem Salt gehasht (nie als Klartext gespeichert). Query-Strings und Fragmente werden aus document_uri/source_file vor der Speicherung entfernt. Wir behalten die UA-Familie (chrome/firefox/safari), nie den kompletten UA-String.
  4. Rauschfilter. Browser-Extension-Verstöße (chrome-extension://, moz-extension://), AV-Injektionen und data:/blob:-URIs werden gezählt und verworfen. Ihr seht, was zählt — nicht, was jemand auf seiner Maschine installiert hat.
  5. Alert-Regeln, die ihr schon kennt. csp_new_violation_type_count oder csp_report_volume in eine Alarmregel einsetzen — und ihr bekommt einen Alarm, wenn ein neuer Verstoßtyp auftaucht (klassische CSP-Drift-Erkennung) oder das Volumen explodiert (neues Deploy schiefgegangen).
  6. Policy-Empfehlungen. Nach einer Woche Reports schlagen wir Allowlist-Ergänzungen vor — sortiert danach, wie vielen Nutzern die Änderung etwas kaputt-geflicktes repariert.

Aktivieren

Auf jeder Monitor-Detailseite gibt es jetzt einen Tab CSP Reports. Ein Klick legt den Endpoint an; wir erzeugen ein Salt, signieren die URL und geben euch ein Copy-Paste-Snippet:

Content-Security-Policy: default-src 'self';
  report-uri https://reports.siteguardian.io/r/69a8b2f…/4e8f1c7d;
  report-to sg-csp
Reporting-Endpoints: sg-csp="https://reports.siteguardian.io/r/69a8b2f…/4e8f1c7d"
Report-To: {"group":"sg-csp","max_age":10886400,"endpoints":[{"url":"https://reports.siteguardian.io/r/69a8b2f…/4e8f1c7d"}]}

Header deployen. Sekunden nach dem ersten echten Browser-Traffic erscheint der erste Bucket im Tab. Nach Count sortieren, reindrillen, Samples ansehen — und Policy iterativ enger ziehen.

Rate-Limits und Schutz

Eine einzige misskonfigurierte CSP auf einer viel besuchten Seite kann uns aus einem Browser mit 10 k Reports/s füttern. nginx limitiert am Rand (200 r/s pro Quell-IP, Burst 400), und ein Per-Monitor-Quota pausiert den Endpoint automatisch für eine Stunde, wenn drei Minuten hintereinander über dem Limit liegen. Ihr werdet nie für einen Crawl-Loop auf eurer eigenen Seite belastet.

Enterprise?

Dieselbe Pipeline skaliert. Der Business-Plan enthält 1 Mio. Reports/Monat; darüber hinaus kosten Überschreitungen 0,00005 €/Report. White-Label-Subdomains (reports.eure-domain.de) sind auf der Roadmap.

Warum der Aufwand?

Weil CSP ohne Reporting CSP auf gut Glück ist. Ihr wisst nicht, bei wie vielen Kundensessions jedes Marketing-Tagmanager-Rollout etwas zerschießt. Ihr wisst nicht, wenn ein Vendor-CDN einen neuen Tracker deployt, den eure Policy nicht erlaubt. Und ihr merkt definitiv nicht, wenn jemand versucht, Angreifer-Skripte nachzuladen.

Jetzt wisst ihr es. Und zwar im Plan, den ihr ohnehin schon habt.

— Günter Weber, SiteGuardian

Wie schneidet Ihre Website im Vergleich ab?

SiteGuardian scannt Ihre Domain über sechs Sicherheitsdimensionen — kostenlos, sofort, ohne Registrierung.

Website scannen

EU-Websicherheit: 10 Schritte zu einem besseren Rating

Dieser Artikel ist Teil einer wöchentlichen Serie zu Best Practices der EU-Web-Sicherheit.

SiteGuardian

2026-04-28

RSS