CSP: report-to
Die Content-Security-Policy
report-to
Direktive gibt den Namen des Endpunkts an, den der Browser für die Meldung von CSP-Verstößen verwenden soll.
Wenn ein CSP-Verstoß auftritt, wird ein Bericht generiert, der eine serialisierte CSPViolationReportBody
Objektinstanz 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 das Mapping zwischen Endpunktnamen und ihren entsprechenden URLs im Reporting-Endpoints
HTTP-Antwortheader separat bereitstellen.
CSP-Version | 3 |
---|---|
Direktivtyp | Reporting directive |
Diese Direktive wird im <meta> Element nicht unterstützt.
|
Syntax
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 Verletzungsberichts
Ein CSP-Verletzungsbericht 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 (sehen Sie sich die jeweiligen Objekte für deren Eigenschaftsdefinitionen an). Berichte werden an den Zielendpunkt/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:
{
"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:
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
Festlegen eines Endpunkts für CSP-Verletzungsberichte
Ein Server kann das Mapping zwischen Endpunktnamen und URLs unter Verwendung des Reporting-Endpoints
Headers in der HTTP-Antwort definieren.
Jeder Name kann verwendet werden: hier haben wir name-of-endpoint
gewählt.
Reporting-Endpoints: name-of-endpoint="https://example.com/csp-reports"
Der Server kann diesen Endpunktnamen als Ziel für das Senden von CSP-Verletzungsberichten mithilfe der report-to
Direktive festlegen:
Content-Security-Policy: default-src 'self'; report-to name-of-endpoint
Spezifikationen
Specification |
---|
Content Security Policy Level 3 # directive-report-to |