Integrity-Policy-Report-Only header
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Der HTTP Integrity-Policy-Report-Only Antwort-Header ermöglicht es Website-Administratoren, Berichte über Ressourcen zu erstellen, die der Benutzer-Agent lädt und die die Subresource Integrity Garantien verletzen würden, wenn die Integritätsrichtlinie durchgesetzt würde (unter Verwendung des Integrity-Policy Headers).
Verstöße gegen die Richtlinie können mithilfe der Reporting API gemeldet werden. Berichte können auf der Seite beobachtet werden, auf der die Richtlinie durchgesetzt wird, unter Verwendung eines ReportingObserver, und an Serverendpunkte gesendet werden, die in einem Reporting-Endpoints HTTP-Antwort-Header definiert sind und mithilfe des endpoints Feldes ausgewählt werden. Weitere Informationen finden Sie unter IntegrityViolationReport.
Der Header ermöglicht es Entwicklern, Integritätsrichtlinien zu testen und alle Inhaltsprobleme zu beheben, bevor schließlich ein Integrity-Policy Header bereitgestellt wird, um die Richtlinie durchzusetzen.
| Header-Typ | Antwort-Header |
|---|
Syntax
Integrity-Policy-Report-Only: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
Die Header-Werte werden als strukturierte Felder-Dictionaries mit den folgenden Schlüsseln definiert:
blocked-destinations-
Eine Liste von Request-Destinationen, die gültige Integritäts-Metadaten enthalten müssen. Erlaubte Werte sind:
sourcesOptional-
Eine Liste von Integritätsquellen, die Integritäts-Metadaten enthalten müssen. Erlaubte Werte sind:
inline-
Die Integritäts-Metadatenquelle ist inline im Inhalt, wie das integrity-Attribut. Dies ist der Standard.
Da dies der Standardwert und der einzige Wert ist, ist das Weglassen von
sourcesgleichbedeutend mit der Angabe vonsources=(inline).
endpointsOptional-
Eine Liste von Berichtsendpunkt-Namen, die anzeigen, wohin Berichte gesendet werden. Die Berichtsendpunkte müssen in einem
Reporting-EndpointsHeader definiert werden.
Beispiele
>Berichterstellung, wenn Skripte keine Integritäts-Metadaten haben
Dieses Beispiel zeigt ein Dokument, das an einen Serverendpunkt berichtet, wenn irgendein <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 Nutzdaten des Berichts könnten folgendermaßen aussehen. Beachten Sie, dass die body.reportOnly Eigenschaft 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> |