Integrity-Policy header
Der HTTP-Integrity-Policy
-Antwortheader ermöglicht es Website-Administratoren sicherzustellen, dass alle vom User-Agent geladenen Ressourcen (eines bestimmten Typs) über Subresource Integrity-Garantien verfügen.
Wenn der Header gesetzt ist, blockiert der User-Agent Anfragen an spezifizierte Request-Destinationen, die Integritätsmetadaten weglassen, und blockiert außerdem Anfragen im no-cors-Modus, damit sie gar nicht erst gemacht werden.
Verletzungsberichte können ebenfalls gesendet werden, wenn der Header einen Berichtsendpunktnamen enthält, der mit einem Endpunkt übereinstimmt, der mit dem Reporting-Endpoints
-Header deklariert wurde.
Berichte werden mithilfe der Reporting API generiert und können auch auf der Seite beobachtet werden, für die die Integritätsrichtlinie durchgesetzt wird, mithilfe eines ReportingObserver.
Das Format des Berichtskörpers wird durch das IntegrityViolationReportBody
-Wörterbuch angegeben (eine JSON-serialisierte Form dieses Körpers wird in POST-Anfragen an Bericht-Serverendpunkte gesendet).
Dies hilft, gegen die Manipulation von Inhalten der abgerufenen Subressourcen zu schützen.
Header-Typ | Antwortheader |
---|---|
Verbotener Anfrageheader | nein |
Syntax
Integrity-Policy: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
Die Header-Werte sind als strukturierte Feldwörterbücher mit folgenden Schlüsseln definiert:
blocked-destinations
-
Eine Liste von Request-Destinationen, die gültige Integritätsmetadaten enthalten müssen. Erlaubte Werte sind:
script
-
Skriptressourcen.
sources
Optional-
Eine Liste von Integritätsquellen, die Integritätsmetadaten enthalten müssen. Erlaubte Werte sind:
inline
-
Die Integritätsmetadatenquelle ist inline im Inhalt enthalten, wie das integrity-Attribut. Dies ist der Standard.
Da dies der Standard und der einzige Wert ist, ist das Weglassen von
sources
gleichbedeutend mit der Angabe vonsources=(inline)
.
endpoints
Optional-
Eine Liste von Berichtsendpunktnamen, die angeben, wohin Berichte gesendet werden. Die Berichtsendpunkte müssen in einem
Reporting-Endpoints
-Header definiert werden.
Beispiele
Blockieren und Berichten, wenn Skripte keine Integritätsmetadaten enthalten
Dieses Beispiel zeigt ein Dokument, das blockiert und berichtet, wenn ein beliebiges <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 Nutzdaten des Berichts könnten 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
Specification |
---|
Subresource Integrity # integrity-policy-section |