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: sample-Eigenschaft

Eingeschränkt verfügbar

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

Die sample-Eigenschaft des CSPViolationReport-Wörterbuchs ist ein String, der einen Teil der Ressource enthält, die gegen die Content Security Policy (CSP) verstoßen hat.

Dieses Sample sind normalerweise die ersten 40 Zeichen des Inline-Skripts, des Ereignis-Handlers oder des Styles, die gegen eine CSP-Einschränkung verstoßen haben. Wenn es nicht ausgefüllt ist, ist es der leere String "".

Beachten Sie, dass dies nur ausgefüllt wird, wenn versucht wird, inline-Skripts, Ereignis-Handler oder Styles zu laden, die gegen die CSP script-src*- und style-src*-Regeln verstoßen – externe Ressourcen, die gegen die CSP verstoßen, erzeugen kein Sample. Außerdem wird ein Sample nur dann eingefügt, wenn die verletzte Content-Security-Policy-Direktive auch das 'report-sample'-Schlüsselwort enthält.

Hinweis: Violation-Berichte sollten als angreiferkontrollierte Daten betrachtet werden. Der Inhalt dieses Feldes insbesondere sollte bereinigt werden, bevor er gespeichert oder dargestellt wird.

Wert

Ein String, der ein Sample der Inline-Ressource enthält, die gegen die CSP verstoßen hat, normalerweise die ersten 40 Zeichen oder den leeren String.

Beispiele

CSP Inline-Skript-Verletzung

Dieses Beispiel löst eine CSP-Verletzung mit einem Inline-Skript aus und meldet die Verletzung mit einem ReportingObserver. Wir fügen auch 'report-sample' zur CSP hinzu, um ein sample im Body auszufüllen.

HTML

Die untenstehende HTML-Datei verwendet das <meta>-Element, um den Content-Security-Policy script-src-elem auf self zu setzen, was erlaubt, dass Skripte von derselben Domain geladen werden, jedoch nicht erlaubt, dass Inline-Skripte ausgeführt werden. Wir fügen 'report-sample' zur Direktive hinzu, damit ein Sample generiert wird. Das Dokument enthält auch ein Inline-Skript, das eine CSP-Verletzung auslösen sollte.

html
<!doctype html>
<html lang="en">
  <head>
    <meta
      http-equiv="Content-Security-Policy"
      content="script-src-elem 'self' 'report-sample'" />
    <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 oben genannte Dokument lädt auch das externe Skript main.js, das unten gezeigt wird. Da das Skript von derselben Domain wie das HTML geladen wird, wird es nicht durch die CSP blockiert.

Das Skript erstellt einen neuen ReportingObserver zur Beobachtung von Inhaltsverletzungsberichten des Typs "csp-violation". Jedes Mal, wenn die Callback-Funktion aufgerufen wird, erhalten wir den Body des ersten Eintrags des Berichte-Arrays und verwenden ihn, um das Violation-sample in der Konsole zu protokollieren.

js
// main.js
const observer = new ReportingObserver(
  (reports, observer) => {
    console.log(`sample: ${reports[0].body.sample}`);
  },
  {
    types: ["csp-violation"],
    buffered: true,
  },
);

observer.observe();

Beachten Sie, dass, obwohl möglicherweise mehrere Berichte im zurückgegebenen Array enthalten sind, wir der Einfachheit halber nur die Werte des ersten Elements protokollieren.

Ergebnisse

Die Konsolenausgabe für den obigen Code ist:

sample: const int = 4;

In diesem Fall enthält das Sample den gesamten Inhalt des Inline-Skripts.

Spezifikationen

Spezifikation
Content Security Policy Level 3
# reporting

Browser-Kompatibilität

Siehe auch