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

http
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 von sources=(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.

http
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.

json
{
  "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

Browser-Kompatibilität

Siehe auch