aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/http/headers/content-security-policy-report-only/index.md
diff options
context:
space:
mode:
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.md156
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: &lt;policy-directive&gt;; &lt;policy-directive&gt;
+</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">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;title&gt;Sign Up&lt;/title&gt;
+ &lt;link rel="stylesheet" href="css/style.css"&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ ... Content ...
+ &lt;/body&gt;
+&lt;/html&gt;</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>