Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. HTTP
  3. Reference
  4. Headers
  5. Content-Security-Policy
  6. report-uri

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

View in EnglishAlways switch to English

Content-Security-Policy: report-uri Direktive

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe dieKompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.

Warnung:Diereport-to Direktive sollreport-uri ersetzen, und in Browsern, diereport-to unterstützen, wird diereport-uri Direktive ignoriert.

Bisreport-to jedoch umfassend unterstützt wird, können Sie beide Header wie gezeigt angeben:

http
Content-Security-Policy: …; report-uri https://endpoint.example.com; report-to endpoint_name

Die veraltete HTTPContent-Security-Policy (CSP)report-uri Direktive weist den User-Agent an, Versuche zur Verletzung der Content Security Policy zu melden.Diese Verletzungsberichte bestehen ausJSON-Dokumenten, die über eine HTTPPOST-Anfrage an die angegebene URI gesendet werden.

Die Direktive hat an sich keine Wirkung, sondern erhält nur in Kombination mit anderen Direktiven Bedeutung.

CSP-Version1
DirektiventypReporting-Direktive
Diese Direktive wird im<meta> Element nicht unterstützt.

Syntax

http
Content-Security-Policy: report-uri <uri>;Content-Security-Policy: report-uri <uri> <uri>;
<uri>

Eine URI, die angibt, wohin der Bericht gesendet werden muss.

Syntax des Verletzungsberichts

Das JSON-Objekt des Berichts wird mit einer HTTPPOST-Operation und einemContent-Type vonapplication/csp-report gesendet.

Hinweis:Verletzungsberichte sollten als Angreifer-kontrollierte Daten betrachtet werden.Der Inhalt sollte vor dem Speichern oder Darstellen ordnungsgemäß bereinigt werden.Dies gilt insbesondere für diescript-sample-Eigenschaft, falls sie bereitgestellt wird.

Das JSON-Objekt des Berichts hat eine einzelne Eigenschaft auf oberster Ebene,"csp-report", die ein Objekt mit den folgenden Eigenschaften enthält:

blocked-uri

Die URI der Ressource, die durch die Content Security Policy am Laden gehindert wurde.Wenn die blockierte URI von einer anderen Herkunft als diedocument-uri stammt, wird die blockierte URI gekürzt, um nur das Schema, den Host und den Port zu enthalten.

disposition

Entweder"enforce" oder"report" je nachdem, ob derContent-Security-Policy-Report-Only Header oder derContent-Security-Policy Header verwendet wird.

document-uri

Die URI des Dokuments, in dem die Verletzung aufgetreten ist.

effective-directive

Die Direktive, deren Durchsetzung die Verletzung verursacht hat.Einige Browser können unterschiedliche Werte bereitstellen, wie z.B. Chrome, dasstyle-src-elem/style-src-attr bereitstellt, selbst wenn die durchgesetzte Direktivestyle-src war.

original-policy

Die ursprünglich von demContent-Security-Policy HTTP-Header festgelegte Richtlinie.

referrerVeraltetNicht standardisiert

Der Referrer des Dokuments, in dem die Verletzung aufgetreten ist.

script-sample

Die ersten 40 Zeichen des eingebetteten Skripts, des Ereignis-Handlers oder des Stils, der die Verletzung verursacht hat.Verletzungen, die von externen Dateien stammen, werden im Bericht nicht aufgenommen.

Dies ist nur anwendbar aufscript-src* undstyle-src* Verletzungen, wenn die entsprechendeContent-Security-Policy Direktive das'report-sample' Schlüsselwort enthält.

status-code

Der HTTP-Statuscode der Ressource, auf der das globale Objekt erstellt wurde.

violated-directiveVeraltet

Die Direktive, deren Durchsetzung die Verletzung verursacht hat. Dieviolated-directive ist ein historischer Name für das Feldeffective-directive und enthält denselben Wert.

Beispiele

CSP-Verletzungsbericht mit Content-Security-Policy

Betrachten wir eine Seite unterhttp://example.com/signup.html.Sie verwendet die folgende Richtlinie, die alles außer Stylesheets, die voncdn.example.com geladen werden, verbietet.

http
Content-Security-Policy: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports

Das HTML vonsignup.html sieht so aus:

html
<!doctype html><html lang="en-US">  <head>    <meta charset="UTF-8" />    <title>Sign Up</title>    <link rel="stylesheet" href="css/style.css" />  </head>  <body>    Here be content.  </body></html>

Sehen Sie den Fehler? Stylesheets dürfen nur voncdn.example.com geladen werden, dennoch versucht die Website, eines von ihrem eigenen Ursprung (http://example.com) zu laden.Ein Browser, der in der Lage ist, CSP durchzusetzen, würde den folgenden Verletzungsbericht alsPOST-Anfrage anhttp://example.com/_/csp-reports senden, wenn das Dokument besucht wird:

json
{  "csp-report": {    "blocked-uri": "http://example.com/css/style.css",    "disposition": "report",    "document-uri": "http://example.com/signup.html",    "effective-directive": "style-src-elem",    "original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports",    "referrer": "",    "status-code": 200,    "violated-directive": "style-src-elem"  }}

Wie Sie sehen können, enthält der Bericht den vollständigen Pfad zur verletzenden Ressource inblocked-uri.Das ist nicht immer der Fall.Wennsignup.html beispielsweise versuchen würde, CSS vonhttp://anothercdn.example.com/stylesheet.css zu laden, würde der Browsernicht den vollständigen Pfad aufnehmen, sondern nur den Ursprung,(http://anothercdn.example.com) um zu verhindern, dass sensible Informationen über Ressourcen fremder Herkunft preisgegeben werden.Die CSP-Spezifikationgibt eine Erklärung für dieses Verhalten.

CSP-Verletzungsbericht mit Content-Security-Policy-Report-Only

Diereport-uri Direktive kann auch mit demContent-Security-Policy-Report-Only Antwortheader verwendet werden.Dieser Header ermöglicht dem Browser zu berichten, aber nicht bei Verstößen zu blockieren, wenn getestet wird.

Der HTTP-Header wäre nahezu identisch.

http
Content-Security-Policy-Report-Only: default-src 'none'; style-src cdn.example.com; report-to /_/csp-reports

Der Bericht wäre derselbe, mit Ausnahme der Angabe"report" und natürlich der"original-policy":

json
{  "csp-report": {    "blocked-uri": "http://example.com/css/style.css",    "disposition": "report",    "document-uri": "http://example.com/signup.html",    "effective-directive": "style-src-elem",    "original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports",    "referrer": "",    "status-code": 200,    "violated-directive": "style-src-elem"  }}

CSP-Verletzungsprotokollierung

Angenommen ein Server sendet Antworten mit dem folgendenContent-Security-Policy Header:

http
Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/

/csp-violation-report-endpoint/ könnte zum Beispiel ein PHP-Skript wie das folgende ausführen, dass das JSON, das die Verletzung beschreibt, protokolliert und, wenn die Verletzung die erste ist, die der Protokolldatei hinzugefügt wird, eine E-Mail an einen Administrator sendet:

php
<?php// Start configure$log_file = dirname(__FILE__) . "/csp-violations.log";$log_file_size_limit = 1000000; // bytes - once exceeded no further entries are added$email_address = "admin@example.com";$email_subject = "Content-Security-Policy violation";// End configuration$current_domain = preg_replace("/www\./i", "", $_SERVER["SERVER_NAME"]);$email_subject = $email_subject . " on " . $current_domain;http_response_code(204); // HTTP 204 No Content$json_data = file_get_contents("php://input");// We pretty print the JSON before adding it to the log fileif (($json_data = json_decode($json_data))) {  $json_data = json_encode(    $json_data,    JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES,  );  if (!file_exists($log_file)) {    // Send an email    $message =      "The following Content-Security-Policy violation occurred on " .      $current_domain . ":\n\n" .      $json_data .      "\n\nFurther CPS violations will be logged to the following log file, but no further email notifications will be sent until this log file is deleted:\n\n" .      $log_file;    mail(      $email_address,      $email_subject,      $message,      "Content-Type: text/plain;charset=utf-8",    );  } else if (filesize($log_file) > $log_file_size_limit) {    exit(0);  }  file_put_contents($log_file, $json_data, FILE_APPEND | LOCK_EX);}

Spezifikationen

Specification
Content Security Policy Level 3
# directive-report-uri

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp