diff options
Diffstat (limited to 'files/fr/web/http/headers/content-security-policy/report-uri/index.html')
-rw-r--r-- | files/fr/web/http/headers/content-security-policy/report-uri/index.html | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/files/fr/web/http/headers/content-security-policy/report-uri/index.html b/files/fr/web/http/headers/content-security-policy/report-uri/index.html new file mode 100644 index 0000000000..11fcad82f9 --- /dev/null +++ b/files/fr/web/http/headers/content-security-policy/report-uri/index.html @@ -0,0 +1,133 @@ +--- +title: 'CSP: report-uri' +slug: Web/HTTP/Headers/Content-Security-Policy/report-uri +tags: + - CSP + - Content-Security-Policy + - Directive + - HTTP + - Reference + - Security + - Sécurité +translation_of: Web/HTTP/Headers/Content-Security-Policy/report-uri +--- +<div>{{HTTPSidebar}}{{deprecated_header}}</div> + +<p>La directive HTTP {{HTTPHeader("Content-Security-Policy")}} (CSP) <code><strong>report-uri</strong></code> demande à l'agent utilisateur de rapporter les violations de règles CSP. Ces rapports de violation sont constituées d'un document JSON envoyé via une requête HTTP POST à l'URI fournie.</p> + +<div class="warning"> +<p>Bien que la directive {{CSP("report-to")}} est prévue remplacer la directive <code><strong>report-uri</strong></code> maintenant dépréciée, {{CSP("report-to")}} n'est pas encore supportée par la plupart des navigateurs modernes. Par rétrocompatibilité avec les navigateurs courants et tout en prévoyant une compatibilité future quand les navigateurs supporteront {{CSP("report-to")}}, vous pouvez spécifier les deux directives <code><strong>report-uri</strong></code> et {{CSP("report-to")}}:</p> + +<pre class="syntaxbox notranslate">Content-Security-Policy: ...; report-uri https://endpoint.com; report-to groupname</pre> + +<p>Dans les navigateurs qui supportent {{CSP("report-to")}}, la directive <code><strong>report-uri</strong></code> sera ignorée.</p> +</div> + +<p>Cette directive n'a aucun effet en elle-même, mais prend tout son sens en étant combinée à d'autres directives.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Version de CSP</th> + <td>1</td> + </tr> + <tr> + <th scope="row">Type de directive</th> + <td>{{Glossary("Reporting directive")}}</td> + </tr> + <tr> + <th colspan="2" scope="row">Cette directive n'est pas supportée dans l'élément {{HTMLElement("meta")}}.</th> + </tr> + </tbody> +</table> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox notranslate">Content-Security-Policy: report-uri <uri>; +Content-Security-Policy: report-uri <uri> <uri>;</pre> + +<dl> + <dt><uri></dt> + <dd>Une URI où envoyer la requête POST contenant le rapport de violation.</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Voir {{HTTPHeader("Content-Security-Policy-Report-Only")}} pour plus d'informations et d'exemples.</p> + +<pre class="notranslate">Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/</pre> + +<p><code>/csp-violation-report-endpoint/</code> pourrait par exemple exécuter un script PHP similaire au suivant qui journaliserait le JSON détaillant la violation et, si elle est la première ajoutée au journal, enverrait un courril à l'administrateur :</p> + +<pre class="brush: php notranslate"><?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 file +if ($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); +} + +</pre> + +<h2 id="Spécifications">Spécifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Spécification</th> + <th scope="col">Statut</th> + <th scope="col">Commentaire</th> + </tr> + <tr> + <td>{{specName("CSP 3.0", "#directive-report-uri", "report-uri")}}</td> + <td>{{Spec2('CSP 3.0')}}</td> + <td>Inchangé.</td> + </tr> + <tr> + <td>{{specName("CSP 1.1", "#directive-report-uri", "report-uri")}}</td> + <td>{{Spec2('CSP 1.1')}}</td> + <td>Définition initiale.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("http.headers.csp.Content-Security-Policy.report-uri")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{HTTPHeader("Content-Security-Policy")}}</li> + <li>{{HTTPHeader("Content-Security-Policy-Report-Only")}}</li> +</ul> |