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

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

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 Nutzdaten des Berichts könnten so 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