Integrity-Policy-Report-Only header
Der HTTP-Integrity-Policy-Report-Only-Response-Header ermöglicht es Website-Administratoren, über Ressourcen zu berichten, die der Nutzeragent lädt und die gegen Subresource Integrity-Garantie verstoßen würden, wenn die Integritätsrichtlinie durchgesetzt würde (unter Verwendung des Integrity-Policy-Headers).
Verstöße gegen die Richtlinie können mit der Reporting API gemeldet werden. Berichte können auf der Seite, für die die Richtlinie durchgesetzt wird, mithilfe eines ReportingObserver beobachtet werden und an Serverendpunkte gesendet werden, die in einem Reporting-Endpoints HTTP-Response-Header definiert und mithilfe des endpoints-Felds ausgewählt werden.
Weitere Informationen finden Sie unter IntegrityViolationReport.
Der Header ermöglicht es Entwicklern, Integritätsrichtlinien zu testen und etwaige Inhaltsprobleme zu beheben, bevor schließlich ein Integrity-Policy-Header deployed wird, um die Richtlinie durchzusetzen.
| Header-Typ | Response-Header |
|---|
Syntax
Integrity-Policy-Report-Only: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
Die Header-Werte sind als strukturierte Feldwörterbücher mit den folgenden Schlüsseln definiert:
blocked-destinations-
Eine Liste von Request-Destinationen, die gültige Integritätsmetadaten enthalten müssen. Erlaubte Werte sind:
sourcesOptional-
Eine Liste von Integritätsquellen, die Integritätsmetadaten enthalten müssen. Erlaubte Werte sind:
inline-
Die Integritätsmetadatenquelle ist inline zum Inhalt, wie das integrity-Attribut. Dies ist der Standard.
Da dies der Standard und der einzige Wert ist, ist das Weglassen von
sourcesgleichbedeutend mit der Angabe vonsources=(inline).
endpointsOptional-
Eine Liste von Reporting-Endpoint-Namen, die angeben, wohin Berichte gesendet werden. Die Reporting-Endpunkte müssen in einem
Reporting-Endpoints-Header definiert sein.
Beispiele
>Berichterstattung, wenn Skripte keine Integritätsmetadaten aufweisen
Dieses Beispiel zeigt ein Dokument, das an einen Serverendpunkt berichtet, wenn ein <script> (oder HTMLScriptElement) kein integrity-Attribut angibt oder wenn eine Skriptressource im no-cors-Modus angefordert wird.
Beachten Sie, dass der integrity-endpoint, der in Integrity-Policy-Report-Only verwendet wird, im Reporting-Endpoints-Header definiert ist.
Reporting-Endpoints: integrity-endpoint=https://example.com/integrity, backup-integrity-endpoint=https://report-provider.example/integrity
Integrity-Policy-Report-Only: blocked-destinations=(script), endpoints=(integrity-endpoint, backup-integrity-endpoint)
Die Nutzlast des Berichts könnte so aussehen.
Beachten Sie, dass die Eigenschaft body.reportOnly true ist, da dieser Bericht durch einen Verstoß gegen Integrity-Policy-Report-Only ausgelöst wurde.
{
"age": "176279",
"type": "integrity-violation",
"url": "https://example.com",
"body": {
"documentURL": "https://example.com",
"blockedURL": "https://example.com/main.js",
"destination": "script",
"reportOnly": "true"
},
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
}
Spezifikationen
| Spezifikation |
|---|
| Subresource Integrity> # integrity-policy-section> |