Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

CSPViolationReport: originalPolicy-Eigenschaft

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Die originalPolicy-Eigenschaft des CSPViolationReport-Wörterbuchs ist ein String, der die Content Security Policy (CSP) repräsentiert, deren Durchsetzung den Verstoß aufgedeckt hat.

Dies ist der String im Content-Security-Policy HTTP-Antwort-Header, der die Liste von Direktiven und deren Werte enthält, die die CSP-Policy bilden. Beachten Sie, dass dies sich von der effectiveDirective unterscheidet, die die spezifische Direktive ist, die tatsächlich verletzt wird (und die möglicherweise nicht explizit in der Policy aufgeführt ist, wenn default-src verwendet wird).

Wert

Ein String, der die Policy repräsentiert, deren Durchsetzung den Verstoß aufgedeckt hat.

Beispiele

CSP-Verstoß durch Inline-Skript

Dieses Beispiel löst einen CSP-Verstoß durch ein Inline-Skript aus und meldet den Verstoß mit einem ReportingObserver. Insbesondere protokolliert es die effectiveDirective und die originalPolicy, um den Unterschied deutlich zu machen.

HTML

Die folgende HTML-Datei verwendet das <meta>-Element, um die Content-Security-Policy default-src auf self zu setzen. Dies erlaubt, dass Skripte und andere Ressourcen von derselben Domain geladen werden, erlaubt jedoch nicht, dass Inline-Skripte ausgeführt werden. Das Dokument enthält auch ein Inline-Skript, das einen CSP-Verstoß auslösen sollte.

html
<!doctype html>
<html lang="en">
  <head>
    <meta
      http-equiv="Content-Security-Policy"
      content="default-src 'self'; report-to csp-endpoint" />
    <!-- This is the (original) CSP policy -->
    <meta
      http-equiv="Reporting-Endpoints"
      content="csp-endpoint='https://example.com/csp-reports'" />
    <script src="main.js"></script>
    <title>CSP: Violation due to inline script</title>
  </head>
  <body>
    <h1>CSP: Violation due to inline script</h1>
    <script>
      const int = 4;
    </script>
  </body>
</html>

JavaScript (main.js)

Das obenstehende Dokument lädt auch das externe Skript main.js, welches unten gezeigt wird. Da dieses Skript von derselben Domain wie das HTML geladen wird, wird es nicht durch die CSP blockiert.

Das Skript erstellt einen neuen ReportingObserver, um Berichte über Inhaltsverletzungen vom Typ "csp-violation" zu beobachten. Jedes Mal, wenn die Callback-Funktion aufgerufen wird, erhalten wir den Körper des ersten Eintrags des Berichts-Arrays und verwenden ihn, um die effectiveDirective und originalPolicy des Verstoßes in die Konsole zu protokollieren.

js
// main.js
const observer = new ReportingObserver(
  (reports, observer) => {
    console.log(`effectiveDirective: ${reports[0].body.effectiveDirective}`);
    // effectiveDirective: script-src-elem
    console.log(`originalPolicy: ${reports[0].body.originalPolicy}`);
    // originalPolicy: default-src 'self'; report-to csp-endpoint
  },
  {
    types: ["csp-violation"],
    buffered: true,
  },
);

observer.observe();

Beachten Sie, dass es mehrere Berichte im zurückgegebenen Array geben kann; aus Gründen der Kürze protokollieren wir jedoch nur die Werte des ersten Elements.

Ergebnisse

Die Konsolenausgabe für den obigen Code lautet:

effectiveDirective: script-src-elem
originalPolicy: default-src 'self'; report-to csp-endpoint

Beachten Sie, dass die originalPolicy mit dem <meta>-Inhalt der Content-Security-Policy-Direktive im HTML übereinstimmt und angibt, dass die Policy standardmäßig self ist (default-src 'self').

Die effectiveDirective ist script-src-elem, welches gültige Quellen für JavaScript-<script>-Elemente spezifiziert. Dies ist die spezifische Direktive, die tatsächlich verletzt wurde, auch wenn default-src in der Policy gesetzt wurde.

Spezifikationen

Spezifikation
Content Security Policy Level 3
# reporting

Browser-Kompatibilität

Siehe auch