Integrity-Policy header
Der Integrity-Policy HTTP-Response-Header ermöglicht es Website-Administratoren sicherzustellen, dass alle vom Benutzeragenten geladenen Ressourcen (eines bestimmten Typs) die Garantien der Subresource Integrity erfüllen.
Wenn gesetzt, blockiert der Benutzeragent Anforderungen an bestimmte Request-Ziele, die Integritätsmetadaten weglassen, und verhindert auch, dass Anfragen im no-cors Modus überhaupt gestellt werden können. Dies hilft, Manipulationen von Inhalten bei abgerufenen Subressourcen zu verhindern.
Verstöße gegen die Richtlinie können mit der Reporting API gemeldet werden.
Berichte können auf der Seite, auf der die Richtlinie durchgesetzt wird, mithilfe eines ReportingObserver beobachtet und an Server-Endpunkte gesendet werden, die in einem Reporting-Endpoints HTTP-Response-Header definiert und unter Verwendung des endpoints-Feldes ausgewählt wurden.
Weitere Informationen finden Sie unter IntegrityViolationReport.
| Header-Typ | Response-Header |
|---|
Syntax
Integrity-Policy: 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-Zielen, 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 Quelle der Integritätsmetadaten ist in den Inhalt eingebettet, wie z. B. das integrity-Attribut. Dies ist der Standardwert.
Da dies der Standard- und einzige Wert ist, entspricht das Weglassen von
sourcesder Angabe vonsources=(inline).
endpointsOptional-
Eine Liste von Namen von Reporting-Endpunkten, die angeben, wohin Berichte gesendet werden. Die Reporting-Endpunkte müssen in einem
Reporting-EndpointsHeader definiert sein.
Beispiele
>Blockieren und Melden, wenn Skripte keine Integritätsmetadaten haben
Dieses Beispiel zeigt ein Dokument, das blockiert und an einen Server-Endpunkt meldet, wenn ein <script> (oder HTMLScriptElement) kein integrity-Attribut angibt oder wenn eine Skript-Ressource im no-cors Modus angefordert wird.
Beachten Sie, dass der in Integrity-Policy verwendete integrity-endpoint im Reporting-Endpoints Header definiert ist.
Reporting-Endpoints: integrity-endpoint="https://example.com/integrity", backup-integrity-endpoint="https://report-provider.example/integrity"
Integrity-Policy: blocked-destinations=(script), endpoints=(integrity-endpoint backup-integrity-endpoint)
Die Berichts-Nutzlast könnte so aussehen.
{
"type": "integrity-violation",
"url": "https://example.com",
"body": {
"documentURL": "https://example.com",
"blockedURL": "https://example.com/main.js",
"destination": "script",
"reportOnly": false
}
}
Spezifikationen
| Spezifikation |
|---|
| Subresource Integrity> # integrity-policy-section> |