CSP: report-to
Die Content-Security-Policy
-Direktive report-to
gibt den Namen des Endpunkts an, den der Browser für das Melden von CSP-Verstößen 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 ihren entsprechenden URLs im Reporting-Endpoints
-HTTP-Antwortheader separat bereitstellen.
CSP-Version | 3 |
---|---|
Direktiventyp | Reporting-Direktive |
Diese Direktive wird nicht im <meta> -Element unterstützt.
|
Syntax
Content-Security-Policy: …; report-to <endpoint_name>
<endpoint_name>
ist der Name eines Endpunkts, der vom 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 eine JSON-serialisierte Report
-Objektinstanz 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 über eine POST
-Operation mit einem Content-Type
von application/reports+json
an den/die Zielendpunkt(e) gesendet.
Das JSON für einen einzelnen Bericht könnte so 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"
}
Nutzungshinweise
Die Direktive report-to
soll report-uri
ersetzen, und Browser, die report-to
unterstützen, ignorieren die Direktive report-uri
. Solange report-to
jedoch nicht umfassend unterstützt wird, können Sie beide Header angeben, wie gezeigt:
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 angezeigt 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.
Reporting-Endpoints: name-of-endpoint="https://example.com/csp-reports"
Der Server kann diesen Endpunktnamen als Ziel für die Übermittlung von CSP-Verstoßberichten verwenden, indem er die Direktive report-to
verwendet:
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