Integrity-Policy header
Der HTTP Integrity-Policy
Response-Header ermöglicht es Website-Administratoren sicherzustellen, dass alle Ressourcen, die das Benutzeragent lädt (eines bestimmten Typs), Subresource Integrity Garantien aufweisen.
Wenn dieser gesetzt ist, blockiert das Benutzeragent Anfragen zu angegebenen request destinations, die Integritätsmetadaten weglassen, und blockiert auch Anfragen im no-cors Modus, sodass diese gar nicht erst ausgeführt werden.
Verstoßmeldungen können auch gesendet werden, wenn der Header einen Berichtsendpunkt-Namen beinhaltet, der mit einem Endpunkt übereinstimmt, der mithilfe des Headers Reporting-Endpoints
deklariert wurde.
Berichte werden unter Verwendung der Reporting API generiert und können auch auf der Seite beobachtet werden, für die die Integritätsrichtlinie durchgesetzt wird, unter Verwendung eines ReportingObserver.
Das Format des Berichtskörpers wird durch das IntegrityViolationReportBody
Wörterbuch bestimmt (eine JSON-serialisierte Form dieses Körpers wird in POSTs an Berichtsserver-Endpunkte gesendet).
Dies hilft, eine Manipulation der Inhalte heruntergeladener Subressourcen zu verhindern.
Header-Typ | Response header |
---|---|
Verbotener Anforderungs-Header | nein |
Syntax
Integrity-Policy: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
Die Header-Werte sind als strukturierte Felddictionaries mit den folgenden Schlüsseln definiert:
blocked-destinations
-
Eine Liste von request destinations, die gültige Integritätsmetadaten enthalten müssen. Erlaubte Werte sind:
script
-
Skriptressourcen.
sources
Optional-
Eine Liste von Herkunftsquellen, die Integritätsmetadaten enthalten müssen. Erlaubte Werte sind:
inline
-
Die Integritätsmetadatenquelle ist inline im Inhalt, wie das integrity attribute. Dies ist der Standard.
Da dies der Standard- und einzige Wert ist, ist das Weglassen von
sources
gleichbedeutend mit der Angabe vonsources=(inline)
.
endpoints
Optional-
Eine Liste von Berichts-Endpunktnamen, die angeben, wohin Berichte gesendet werden. Die Berichts-Endpunkte müssen in einem
Reporting-Endpoints
Header definiert sein.
Beispiele
Blockieren und Berichten, wenn Skripte keine Integritätsmetadaten haben
Dieses Beispiel zeigt ein Dokument, das blockiert und 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
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: blocked-destinations=(script), endpoints=(integrity-endpoint, backup-integrity-endpoint)
Die Berichtsnutzdaten könnten folgendermaßen aussehen.
{
"type": "integrity-violation",
"url": "https://example.com",
"body": {
"documentURL": "https://example.com",
"blockedURL": "https://example.com/main.js",
"destination": "script",
"reportOnly": false
}
}
Spezifikationen
Specification |
---|
Subresource Integrity # integrity-policy-section |