diff options
Diffstat (limited to 'files/fr/web/http/headers/content-security-policy-report-only/index.md')
-rw-r--r-- | files/fr/web/http/headers/content-security-policy-report-only/index.md | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/files/fr/web/http/headers/content-security-policy-report-only/index.md b/files/fr/web/http/headers/content-security-policy-report-only/index.md new file mode 100644 index 0000000000..7524dab5f1 --- /dev/null +++ b/files/fr/web/http/headers/content-security-policy-report-only/index.md @@ -0,0 +1,156 @@ +--- +title: Content-Security-Policy-Report-Only +slug: Web/HTTP/Headers/Content-Security-Policy-Report-Only +tags: + - CSP + - Content-Security-Policy + - HTTP + - HTTPS + - Reference + - Security + - Sécurité + - header +translation_of: Web/HTTP/Headers/Content-Security-Policy-Report-Only +--- +<div>{{HTTPSidebar}}</div> + +<p>L'en-tête de réponse HTTP <strong><code>Content-Security-Policy-Report-Only</code></strong> permet aux développeurs web d'expérimenter avec les règles CSP en contrôlant leur application sans bloquer de contenu. Ces rapports de violations sont constitués d'un document {{Glossary("JSON")}} envoyé via une requête HTTP <code>POST</code> à l'URI spécifiée.</p> + +<p>Pour plus d'informations, voir aussi cet article sur les <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy (CSP)</a>.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Type d'en-tête</th> + <td>{{Glossary("Response header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>non</td> + </tr> + <tr> + <th colspan="2" scope="row">Cet en-tête n'est pas supporté au sein d'un élément {{HTMLElement("meta")}}.</th> + </tr> + </tbody> +</table> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive> +</pre> + +<h2 id="Directives">Directives</h2> + +<p>Les directives de l'en-tête {{HTTPHeader("Content-Security-Policy")}} peuvent aussi être appliquées à l'en-tête <code>Content-Security-Policy-Report-Only</code>.</p> + +<p>La directive CSP {{CSP("report-uri")}} doit être utilisée avec celui-ci, ou définir cet en-tête ne servirait à rien puisqu'aucun rapport ne serait envoyé.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet en-tête rapporte les violations qui seront constatées. Vous pouvez l'utiliser pour améliorer vos CSP. Vous pouvez observer comment votre site fonctionne en consultant les rapports ou <a href="https://secure.wphackedhelp.com/blog/wordpress-malware-redirect-hack-cleanup/">redirections malicieuses</a>, puis choisir les règles voulues pour bloquer le contenu avec l'en-tête {{HTTPHeader("Content-Security-Policy")}}.</p> + +<pre>Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/</pre> + +<p>Si vous voulez toujours recevoir des rapports, mais aussi imposer des règles, utilisez l'en-tête {{HTTPHeader("Content-Security-Policy")}} avec la directive {{CSP("report-uri")}}.</p> + +<pre>Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/</pre> + +<h2 id="Syntaxe_dun_rapport_de_violation">Syntaxe d'un rapport de violation</h2> + +<p>L'objet de rapport JSON contient les informations suivantes :</p> + +<dl> + <dt><code>blocked-uri</code></dt> + <dd>L'URI de la ressource dont le chargement a été bloqué par les règles Content Security Policy. Si l'URI bloquée est d'une origine différente que celle du document (<code>document-uri</code>), alors l'URI bloquée est tronquée pour contenir uniquement le schéma, l'hôte et le port.</dd> + <dt><code>disposition</code></dt> + <dd>Soit <code>"enforce"</code>, soit <code>"report"</code>, selon que l'en-tête qui a déclenché l'envoi du rapport est {{HTTPHeader("Content-Security-Policy")}} ou <code>Content-Security-Policy-Report-Only</code>.</dd> + <dt><code>document-uri</code></dt> + <dd>L'URI du document dans lequel la violation a eu lieu.</dd> + <dt><code>effective-directive</code></dt> + <dd>La directive qui a causé la violation.</dd> + <dt><code>original-policy</code></dt> + <dd>La règle originale telle que spécifiée par l'en-tête <code>Content-Security-Policy-Report-Only</code>.</dd> + <dt><code>referrer</code></dt> + <dd>Le référent du document dans lequel la violation a eu lieu.</dd> + <dt><code>script-sample</code></dt> + <dd>Les 40 premiers caractères du script embarqué, du gestionnaire d'évènements par attribut ou de la feuille de style qui a causé la violation.</dd> + <dt><code>status-code</code></dt> + <dd>Le code de statut HTTP de la ressource sur laquelle l'objet global a été instancié.</dd> + <dt><code>violated-directive</code></dt> + <dd>Le nom de la directive qui a été violée.</dd> +</dl> + +<h2 id="Extrait_de_rapport_de_violation">Extrait de rapport de violation</h2> + +<div>Considérons une page à l'adresse <code>http://example.com/signup.html</code>. Elle utilise la règle CSP suivante, interdisant tout excepté les feuilles de styles chargées depuis <code>cdn.example.com</code>.</div> + +<div> +<pre>Content-Security-Policy-Report-Only: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports</pre> +</div> + +<div>La page HTML correspondant à l'adresse <code>signup.html</code> ressemble à :</div> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <title>Sign Up</title> + <link rel="stylesheet" href="css/style.css"> + </head> + <body> + ... Content ... + </body> +</html></pre> + +<div>Avez-vous identifié une violation ?</div> + +<div>Les feuilles de styles ne sont acceptées que si elles sont chargées depuis <code>cdn.example.com</code>, et pourtant le site tente d'en charger une depuis sa propre origine (<code>http://example.com</code>). Un navigateur capable d'imposer des règles CSP enverra le rapport de violation suivant sous la forme d'une requête POST à l'adresse <code>http://example.com/_/csp-reports</code> quand la page sera visitée :</div> + +<pre class="brush: js">{ + "csp-report": { + "document-uri": "http://example.com/signup.html", + "referrer": "", + "blocked-uri": "http://example.com/css/style.css", + "violated-directive": "style-src cdn.example.com", + "original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports", + "disposition": "report" + } +}</pre> + +<p>Comme vous le voyez, la rapport inclut le chemin complet de la ressource à l'origine de la violaton dans la propriété <code>blocked-uri</code>. Ce n'est pas toujours le cas. Par exemple, quand la page <code>signup.html</code> essaiera de charger un CSS depuis <code>http://anothercdn.example.com/stylesheet.css</code>, le navigateur n'inclura pas le chemin complet mais seulement son origine (<code>http://anothercdn.example.com</code>). Cela est fait pour empêcher les fuites d'informations sensibles à propos de ressources externes.</p> + +<h2 id="Spécifications">Spécifications</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Spécification</th> + <th scope="col">Statut</th> + <th scope="col">Commentaire</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{specName("CSP 3.0")}}</td> + <td>{{Spec2('CSP 3.0')}}</td> + <td>Inchangé.</td> + </tr> + <tr> + <td>{{specName("CSP 1.1")}}</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>{{Compat("http.headers.Content-Security-Policy-Report-Only")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{HTTPHeader("Content-Security-Policy")}}</li> + <li>CSP {{CSP("report-uri")}} directive</li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security in WebExtensions</a></li> + <li><a href="/en-US/docs/Tools/GCLI/Display_security_and_privacy_policies">Display security and privacy policies In Firefox Developer Tools</a></li> +</ul> |