Reporting API für Netlify konfigurieren

Schritt-für-Schritt-Anleitung: CSP-Violations und andere Security-Violations auf Netlify per Reporting API dauerhaft erfassen und auswerten.

Netlify · Schritt für Schritt

Reporting API auf Netlify

Die Reporting API ermöglicht es, CSP-Violations, Deprecation-Warnungen und andere Browser-Fehler an einen Server-Endpoint zu senden. So erkennen Sie Sicherheitsprobleme in Produktion, bevor Nutzer betroffen sind. Reporting ist mit 4 von 166 Punkten ein Faktor im Wolf-Agents Web Security Check.

Auf Netlify setzen Sie den Reporting-Endpoints Header per netlify.toml, _headers oder Edge Functions. Der Reporting-Endpoint muss ein separater Service sein (z.B. eine Netlify Function, ein externer Dienst wie Sentry oder report-uri.com), der die Reports entgegennimmt und speichert.

Die netlify.toml eignet sich für statische Endpoints. Wenn Sie dynamische CSP mit Nonces per Edge Function verwenden, sollten Sie Reporting-Endpoints in derselben Edge Function setzen, um die Konfiguration konsistent zu halten.

1 Schritt 1 von 3

Reporting-Endpoints per netlify.toml oder _headers

Definieren Sie den Reporting-Endpoint und verknüpfen Sie ihn mit Ihrer CSP über die report-to Direktive. Sie können mehrere Endpoints definieren — z.B. einen für CSP-Reports und einen Default-Endpoint für andere Report-Typen.

netlify.toml Empfohlen
# netlify.toml — Reporting-Endpoints
[[headers]]
  for = "/*"
  [headers.values]
    Reporting-Endpoints = "csp-endpoint=\"https://reporting.ihre-domain.de/csp\", default=\"https://reporting.ihre-domain.de/default\""
    Content-Security-Policy = "default-src 'self'; report-to csp-endpoint"
_headers Alternative
# _headers — Reporting-Endpoints
/*
  Reporting-Endpoints: csp-endpoint="https://reporting.ihre-domain.de/csp", default="https://reporting.ihre-domain.de/default"
  Content-Security-Policy: default-src 'self'; report-to csp-endpoint
report-uri vs. report-to

report-uri ist veraltet. Verwenden Sie report-to mit dem Reporting-Endpoints Header. Für maximale Kompatibilität setzen Sie beide Direktiven parallel in der CSP.

2 Schritt 2 von 3

Edge Function für dynamisches Reporting

Wenn Sie CSP per Edge Function setzen (z.B. mit dynamischen Nonces), fügen Sie die report-to Direktive und den Reporting-Endpoints Header in derselben Edge Function hinzu. So bleiben CSP und Reporting immer konsistent.

netlify/edge-functions/reporting.ts Deno
// netlify/edge-functions/reporting.ts
import type { Context } from "https://edge.netlify.com";

export default async (request: Request, context: Context) => {
  const response = await context.next();

  // Reporting-Endpoints für alle Responses setzen
  response.headers.set(
    "Reporting-Endpoints",
    'csp-endpoint="https://reporting.ihre-domain.de/csp"'
  );

  // report-to Direktive an bestehende CSP anhängen
  const csp = response.headers.get("Content-Security-Policy") || "";
  if (csp && !csp.includes("report-to")) {
    response.headers.set(
      "Content-Security-Policy",
      csp + "; report-to csp-endpoint"
    );
  }

  return response;
};

export const config = { path: "/*" };
Für den Report-Empfang können Sie eine Netlify Function nutzen, die POST-Requests mit application/reports+json entgegennimmt. Alternativ eignen sich externe Services wie Sentry, report-uri.com oder ein eigener Logging-Endpoint.
3 Schritt 3 von 3

Reporting-Header verifizieren

Prüfen Sie, ob der Reporting-Endpoints Header gesetzt ist und die CSP die report-to Direktive enthält. Browser senden Reports asynchron — Sie sehen sie erst im Reporting-Endpoint, nicht in der Konsole.

Terminal Verifizieren
# Reporting-Endpoints Header prüfen
curl -sI https://ihre-domain.de | grep -i reporting-endpoints

# Erwartete Ausgabe:
# Reporting-Endpoints: csp-endpoint="https://reporting.ihre-domain.de/csp"

# CSP report-to Direktive prüfen
curl -sI https://ihre-domain.de | grep -i content-security-policy

# Erwartete Ausgabe (Auszug):
# ... report-to csp-endpoint

# Deploy Preview ebenfalls prüfen
curl -sI https://deploy-preview-42--ihre-site.netlify.app | grep -i reporting

# Wolf-Agents Web Security Check nutzen:
# https://wolf-agents.com/tools/web-security-check

Häufige Fehler bei Reporting auf Netlify

Endpoint nicht erreichbar

Der Reporting-Endpoint muss oeffentlich erreichbar sein und CORS für den Browser erlauben. Testen Sie den Endpoint separat mit curl -X POST und prüfen Sie die Serverantwort.

Doppelte Report-Header

Wenn netlify.toml und eine Edge Function beide Reporting-Endpoints setzen, überschreibt die Edge Function den statischen Header. Setzen Sie den Header nur an einer Stelle.

Zu viele Reports

Browser senden bei jeder CSP-Violation einen Report. Implementieren Sie Rate-Limiting und Deduplizierung auf dem Reporting-Endpoint, um Log-Fluten zu vermeiden.

Deploy Preview mit falschem Endpoint

Deploy Previews senden Reports an denselben Endpoint wie Produktion. Filtern Sie Reports nach der document-uri, um Preview-Reports von Produktionsdaten zu trennen.

Compliance-Relevanz

Reporting ist ein wesentlicher Bestandteil der Sicherheitsüberwachung und wird von mehreren Standards gefordert.

NIS2

Fordert die Erkennung und Meldung von Sicherheitsvorfällen. Die Reporting API erfasst CSP-Violations automatisch und liefert Daten für die Vorfallsbewertung.

PCI DSS 4.0

Verlangt die Überwachung von Script-Verletzungen auf Zahlungsseiten (Anforderung 6.4.3). CSP-Reporting dokumentiert jeden Verstoß nachvollziehbar.

OWASP

Empfiehlt Reporting als Best Practice für Security-Header-Monitoring. Ohne Reporting bleiben CSP-Verstoße unentdeckt.

Wolf-Agents Check

Bewertet die Reporting API mit bis zu 4 Punkten. Geprüft werden das Vorhandensein von Reporting-Endpoints und die report-to Direktive in der CSP.

Wie steht Ihre Domain bei Reporting API?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.