CSP: report-to

Die Content-Security-Policy report-to Direktive gibt den Namen des Endpunkts an, den der Browser für das Melden von Verstößen gegen die CSP verwenden soll.

Wenn ein CSP-Verstoß auftritt, wird ein Bericht erstellt, der eine serialisierte Instanz des CSPViolationReportBody Objekts enthält. Dieser Bericht wird an die URL gesendet, die dem Endpunktnamen entspricht, unter Verwendung der generischen Mechanismen, die in der Reporting API definiert sind.

Der Server muss die Zuordnung zwischen Endpunktnamen und den entsprechenden URLs separat im Reporting-Endpoints HTTP-Antwortheader bereitstellen.

CSP-Version 3
Direktivtyp Reporting-Direktive
Diese Direktive wird im <meta>-Element nicht unterstützt.

Syntax

http
Content-Security-Policy: …; report-to <endpoint_name>

<endpoint_name> ist der Name eines Endpunkts, der durch den Reporting-Endpoints HTTP-Antwortheader bereitgestellt wird. Es kann auch der Name einer Gruppe sein, die vom Server im Report-To Veraltet HTTP-Antwortheader bereitgestellt wird.

Syntax des Verstoßberichts

Ein CSP-Verstoßbericht ist ein JSON-serialisiertes Report Objekt, mit einer type-Eigenschaft, die den Wert "csp-violation" hat, und einem body, das die serialisierte Form eines CSPViolationReportBody Objekts ist (siehe die jeweiligen Objekte für ihre Eigenschaftsdefinitionen). Berichte werden an die Zielendpunkte durch eine POST Operation mit einem Content-Type von application/reports+json gesendet.

Das JSON für einen Einzelbericht könnte so aussehen:

json
{
  "age": 53531,
  "body": {
    "blockedURL": "inline",
    "columnNumber": 39,
    "disposition": "enforce",
    "documentURL": "https://example.com/csp-report",
    "effectiveDirective": "script-src-elem",
    "lineNumber": 121,
    "originalPolicy": "default-src 'self'; report-to csp-endpoint-name",
    "referrer": "https://www.google.com/",
    "sample": "console.log(\"lo\")",
    "sourceFile": "https://example.com/csp-report",
    "statusCode": 200
  },
  "type": "csp-violation",
  "url": "https://example.com/csp-report",
  "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
}

Nutzungshinweise

Die report-to Direktive soll report-uri ersetzen, und Browser, die report-to unterstützen, ignorieren die report-uri Direktive. Solange report-to jedoch nicht weitläufig unterstützt wird, können Sie beide Direktiven angeben, wie gezeigt:

http
Content-Security-Policy: …; report-uri https://endpoint.example.com; report-to endpoint_name

Beachten Sie, dass andere Beispiele in diesem Thema report-uri nicht zeigen.

Beispiele

Einstellen eines CSP-Verstoßberichte-Endpunkts

Ein Server kann die Zuordnung zwischen Endpunktnamen und URLs mithilfe des Reporting-Endpoints Headers in der HTTP-Antwort definieren. Jeder Name kann verwendet werden: hier haben wir name-of-endpoint gewählt.

http
Reporting-Endpoints: name-of-endpoint="https://example.com/csp-reports"

Der Server kann diesen Endpunktnamen als Ziel für das Senden von CSP-Verstoßberichten mithilfe der report-to Direktive festlegen:

http
Content-Security-Policy: default-src 'self'; report-to name-of-endpoint

Spezifikationen

Specification
Content Security Policy Level 3
# directive-report-to

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch