Content-Security-Policy: report-to Direktive

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

Tritt ein CSP-Verstoß auf, 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 separat die Zuordnung zwischen Endpunktnamen und ihren entsprechenden URLs im Reporting-Endpoints HTTP-Response-Header bereitstellen.

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

Syntax

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

<endpoint_name> ist der Name eines vom Reporting-Endpoints HTTP-Response-Header bereitgestellten Endpunkts. Es kann auch der Name einer Gruppe sein, die vom Server im Report-To Veraltet HTTP-Response-Header 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, der die serialisierte Form eines CSPViolationReportBody-Objekts ist (siehe die jeweiligen Objekte für ihre Eigenschaftsdefinitionen). Berichte werden an die Zielendpunkte über eine POST-Operation mit einem Content-Type von application/reports+json gesendet.

Das JSON für einen einzelnen Bericht könnte wie folgt 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"
}

Verwendungshinweise

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

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

Beachten Sie, dass in anderen Beispielen in diesem Thema report-uri nicht gezeigt wird.

Beispiele

Festlegen eines CSP-Verstoßberichts-Endpunkts

Ein Server kann die Zuordnung zwischen Endpunktnamen und URLs mit dem Reporting-Endpoints-Header 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 mit der report-to-Direktive setzen:

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

Siehe auch