diff options
author | julieng <julien.gattelier@gmail.com> | 2021-09-17 20:50:13 +0200 |
---|---|---|
committer | SphinxKnight <SphinxKnight@users.noreply.github.com> | 2021-10-12 07:57:56 +0200 |
commit | 0fe03b92344c0f9b0d4ada2146d4480997ab2e25 (patch) | |
tree | b2b704c9e2987a769980ad0d619ff1bd879c7e34 /files/fr/web/http/headers/content-security-policy/default-src/index.md | |
parent | df12ec2617159d79d2ea959389358ef52423f9ff (diff) | |
download | translated-content-0fe03b92344c0f9b0d4ada2146d4480997ab2e25.tar.gz translated-content-0fe03b92344c0f9b0d4ada2146d4480997ab2e25.tar.bz2 translated-content-0fe03b92344c0f9b0d4ada2146d4480997ab2e25.zip |
convert content to md
Diffstat (limited to 'files/fr/web/http/headers/content-security-policy/default-src/index.md')
-rw-r--r-- | files/fr/web/http/headers/content-security-policy/default-src/index.md | 255 |
1 files changed, 115 insertions, 140 deletions
diff --git a/files/fr/web/http/headers/content-security-policy/default-src/index.md b/files/fr/web/http/headers/content-security-policy/default-src/index.md index 9f2d9d6cb8..ac8590e5ce 100644 --- a/files/fr/web/http/headers/content-security-policy/default-src/index.md +++ b/files/fr/web/http/headers/content-security-policy/default-src/index.md @@ -14,108 +14,105 @@ tags: - source translation_of: Web/HTTP/Headers/Content-Security-Policy/default-src --- -<div>{{HTTPSidebar}}</div> - -<p>La directive HTTP {{HTTPHeader("Content-Security-Policy")}} (CSP) <strong><code>default-src</code></strong> sert de valeur par défaut pour les autres directives CSP {{Glossary("fetch directive", "fetch directives")}}.</p> - -<p>Pour chacune des directives suivantes, l'agent utilisateur consultera la directive <code>default-src</code> et utilisera sa valeur pour la directive demandée si celle-ci est absente :</p> - -<ul> - <li>{{CSP("child-src")}}</li> - <li>{{CSP("connect-src")}}</li> - <li>{{CSP("font-src")}}</li> - <li>{{CSP("frame-src")}}</li> - <li>{{CSP("img-src")}}</li> - <li>{{CSP("manifest-src")}}</li> - <li>{{CSP("media-src")}}</li> - <li>{{CSP("object-src")}}</li> - <li>{{CSP("prefetch-src")}}</li> - <li>{{CSP("script-src")}}</li> - <li>{{CSP("script-src-elem")}}</li> - <li>{{CSP("script-src-attr")}}</li> - <li>{{CSP("style-src")}}</li> - <li>{{CSP("style-src-elem")}}</li> - <li>{{CSP("style-src-attr")}}</li> - <li>{{CSP("worker-src")}}</li> -</ul> +{{HTTPSidebar}} + +La directive HTTP {{HTTPHeader("Content-Security-Policy")}} (CSP) **`default-src`** sert de valeur par défaut pour les autres directives CSP {{Glossary("fetch directive", "fetch directives")}}. + +Pour chacune des directives suivantes, l'agent utilisateur consultera la directive `default-src` et utilisera sa valeur pour la directive demandée si celle-ci est absente : + +- {{CSP("child-src")}} +- {{CSP("connect-src")}} +- {{CSP("font-src")}} +- {{CSP("frame-src")}} +- {{CSP("img-src")}} +- {{CSP("manifest-src")}} +- {{CSP("media-src")}} +- {{CSP("object-src")}} +- {{CSP("prefetch-src")}} +- {{CSP("script-src")}} +- {{CSP("script-src-elem")}} +- {{CSP("script-src-attr")}} +- {{CSP("style-src")}} +- {{CSP("style-src-elem")}} +- {{CSP("style-src-attr")}} +- {{CSP("worker-src")}} <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("Fetch directive")}}</td> - </tr> - </tbody> + <tbody> + <tr> + <th scope="row">Version de CSP</th> + <td>1</td> + </tr> + <tr> + <th scope="row">Type de directive</th> + <td>{{Glossary("Fetch directive")}}</td> + </tr> + </tbody> </table> -<h2 id="Syntaxe">Syntaxe</h2> - -<p>Une ou plusieurs sources peuvent être autorisées pour cette directive :</p> - -<pre class="syntaxbox">Content-Security-Policy: default-src <source>; -Content-Security-Policy: default-src <source> <source>; -</pre> - -<h3 id="Sources">Sources</h3> - -<p>La <source> peut être une des suivantes :</p> - -<dl> - <dt><host-source></dt> - <dd>Des hôtes Internet par leur nom de domaine ou adresse IP, aussi bien qu'un <a href="/en-US/docs/URIs_and_URLs">protocole</a> et/ou un numéro de port. L'adresse du site peut inclure un caractère de remplacement optionnel (l'astérisque <code>'*'</code>), qui ne peut être utilisée que pour indiquer un sous-domaine ou que tous les ports existants sont des sources valides.<br> - Exemples: - <ul> - <li><code>http://*.example.com</code>: correspondra à toutes les tentatives d'accès pour tous les sous-domaines de example.com via le protocole <code>http:</code>.</li> - <li><code>mail.example.com:443</code>: correspondra à toutes les tentatives d'accès sur le port 443 de mail.example.com.</li> - <li><code>https://store.example.com</code>: correspondra à toutes les tentatives d'accès à store.example.com via le protocole <code>https:</code>.</li> - <li><code>*.example.com</code>: correspondra à toutes les tentatives d'accès pour tous les sous-domaines de example.com en utilisant le protocole courant.</li> - </ul> - </dd> - <dt><scheme-source></dt> - <dd>Un protocole tel que <code>http:</code> ou <code>https:</code>. Les deux-points sont nécessaires. Contrairement à d'autres valeurs ci-bas, les guillemets ne devraient pas être employés. Vous pouvez aussi spécifier des schémas de données (quoi que ce ne soit pas recommandé). - <ul> - <li><code>data:</code> permet aux <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">URI <code>data:</code></a> d'être utilisées comme sources de contenu.<em> Cette pratique manque de sécurité ; une personne malveillante peut aussi injecter des URI data: arbitraires. Utilisez cette valeur avec parcimonie certainement pas pour des scripts.</em></li> - <li><code>mediastream:</code> permet aux <a href="/en-US/docs/Web/API/MediaStream_API">URI <code>mediastream:</code></a> d'être utilisées comme source de contenu.</li> - <li><code>blob:</code> permet aux <a href="/en-US/docs/Web/API/Blob">URI <code>blob:</code></a> d'être utilisées comme source de contenu.</li> - <li><code>filesystem:</code> Allows <a href="/en-US/docs/Web/API/FileSystem">URI <code>filesystem:</code></a> d'être utilisées comme source de contenu.</li> - </ul> - </dd> - <dt><code>'self'</code></dt> - <dd>Cette valeur fait référence au domaine dont est originaire le document protégé, y compris le protocole et le numéro de port. Vous devez mettre cette valeur entre guillemets. Certains navigateurs excluent spécifiquement les valeurs <code>blob</code> et <code>filesystem</code> des directives de source. Les sites nécessitant une permission pour ces types de contenu peuvent les spécifier en utilisant l'attribut Data.</dd> - <dt><code>'unsafe-eval'</code></dt> - <dd>Permet l'usage de la fonction <code>eval()</code> et de méthodes similaires pour créer du code à partir de chaines de caractères. Vous devez mettre cette valeur entre guillemets.</dd> - <dt><code>'unsafe-hashes'</code></dt> - <dd>Permet l'usage de certains <a href="/en-US/docs/Web/Guide/Events/Event_handlers">écouteurs d'évènements</a> par attributs. Si vous n'avez besoin que d'écouteurs d'évènements par attributs et non d'éléments {{HTMLElement("script")}} embarqués ou d'URL <code>javascript:</code>, cette valeur est plus sécurisée que <code>unsafe-inline</code>.</dd> - <dt><code>'unsafe-inline'</code></dt> - <dd>Permet l'usage de ressources embarquées, tels que des éléments {{HTMLElement("script")}} (sans <code>src</code>), d'URL <code>javascript:</code>, de gestionnaire d'évènement par attributs (<code>on<eventName></code>), et d'éléments {{HTMLElement("style")}}. Vous devez mettre cette valeur entre guillemets.</dd> - <dt><code>'none'</code></dt> - <dd>Aucune source n'est admise. Vous devez mettre cette valeur entre guillemets.</dd> - <dt>'nonce-<base64-value>'</dt> - <dd>Une liste de permissions pour des scripts embarqués spécifiques en utilisant un nonce (<em>number used once</em>, nombre à usage unique) cryptographique. Le serveur doit générer un nonce à chaque fois qu'il transmet une réponse. Il est extrèmement important de fournir des nonces non prédictibles, puisque le contraire permettrait aisément de contourner la stratégie de sécurité. Voir <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script">inline script non fiables</a> pour avoir un exemple. Spécifier un nonce implique que les navigateurs modernes ignoreront la valeur <code>'unsafe-inline'</code>, qui peut toutefois être laissée pour les anciens navigateurs ne supportant pas les nonces.</dd> - <dt>'<hash-algorithm>-<base64-value>'</dt> - <dd>Un hash sha256, sha384 ou sha512 d'un <code><script></code> ou d'un <code><style></code>. Cette source est composée de deux parties séparées par un tiret : le nom de l'algorithme de chiffrage utilisé pour générer le hash à gauche et le hash encodé en base 64 à droite. Lors de la génération du hash, il ne faut pas inclure les balises <code><script></code> or <code><style></code> et tenir compte de la casse et des caractères blancs (espaces, retours à la ligne, etc.). Voir <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script">inline script non fiables</a> pour en avoir un exemple. En CSP 2.0, cette valeur ne s'applique qu'aux scripts embarqués. CSP 3.0 le permet aussi dans le cas de scripts externes.</dd> - <dt>'strict-dynamic'</dt> - <dd>La valeur <code>strict-dynamic</code> spécifie que la confiance explicitement donnée à un script de la page, par le biais d'un nonce ou d'un hash, doit être propagée à tous les scripts chargés par celui-ci. En conséquence, toute les valeurs telles que <code>'self'</code> ou <code>'unsafe-inline'</code> et listes de permissions sont ignorées. Voir <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#strict-dynamic">script-src</a> pour en avoir un exemple.</dd> - <dt>'report-sample'</dt> - <dd>Requiert qu'un échantillon du code violant la directive soit inclus dans le rapport envoyé.</dd> -</dl> - - -<h2 id="Exemples">Exemples</h2> - -<h3 id="Absence_dhéritage_avec_default-src">Absence d'héritage avec default-src</h3> - -<p>S'il y a d'autres directives spécifiées, <code>default-src</code> ne les affecte pas. Soit l'en-tête suivant :</p> - -<pre class="brush: bash">Content-Security-Policy: default-src 'self'; script-src https://example.com</pre> - -<p>Est identique à :</p> - -<pre class="brush: bash">Content-Security-Policy: connect-src 'self'; +## Syntaxe + +Une ou plusieurs sources peuvent être autorisées pour cette directive : + + Content-Security-Policy: default-src <source>; + Content-Security-Policy: default-src <source> <source>; + +### Sources + +La \<source> peut être une des suivantes : + +- \<host-source> + + - : Des hôtes Internet par leur nom de domaine ou adresse IP, aussi bien qu'un [protocole](/en-US/docs/URIs_and_URLs) et/ou un numéro de port. L'adresse du site peut inclure un caractère de remplacement optionnel (l'astérisque `'*'`), qui ne peut être utilisée que pour indiquer un sous-domaine ou que tous les ports existants sont des sources valides. + Exemples: + + - `http://*.example.com`: correspondra à toutes les tentatives d'accès pour tous les sous-domaines de example.com via le protocole `http:`. + - `mail.example.com:443`: correspondra à toutes les tentatives d'accès sur le port 443 de mail.example.com. + - `https://store.example.com`: correspondra à toutes les tentatives d'accès à store.example.com via le protocole `https:`. + - `*.example.com`: correspondra à toutes les tentatives d'accès pour tous les sous-domaines de example.com en utilisant le protocole courant. + +- \<scheme-source> + + - : Un protocole tel que `http:` ou `https:`. Les deux-points sont nécessaires. Contrairement à d'autres valeurs ci-bas, les guillemets ne devraient pas être employés. Vous pouvez aussi spécifier des schémas de données (quoi que ce ne soit pas recommandé). + + - `data:` permet aux [URI `data:`](/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) d'être utilisées comme sources de contenu. _Cette pratique manque de sécurité ; une personne malveillante peut aussi injecter des URI data: arbitraires. Utilisez cette valeur avec parcimonie certainement pas pour des scripts._ + - `mediastream:` permet aux [URI `mediastream:`](/en-US/docs/Web/API/MediaStream_API) d'être utilisées comme source de contenu. + - `blob:` permet aux [URI `blob:`](/en-US/docs/Web/API/Blob) d'être utilisées comme source de contenu. + - `filesystem:` Allows [URI `filesystem:`](/en-US/docs/Web/API/FileSystem) d'être utilisées comme source de contenu. + +- `'self'` + - : Cette valeur fait référence au domaine dont est originaire le document protégé, y compris le protocole et le numéro de port. Vous devez mettre cette valeur entre guillemets. Certains navigateurs excluent spécifiquement les valeurs `blob` et `filesystem` des directives de source. Les sites nécessitant une permission pour ces types de contenu peuvent les spécifier en utilisant l'attribut Data. +- `'unsafe-eval'` + - : Permet l'usage de la fonction `eval()` et de méthodes similaires pour créer du code à partir de chaines de caractères. Vous devez mettre cette valeur entre guillemets. +- `'unsafe-hashes'` + - : Permet l'usage de certains [écouteurs d'évènements](/en-US/docs/Web/Guide/Events/Event_handlers) par attributs. Si vous n'avez besoin que d'écouteurs d'évènements par attributs et non d'éléments {{HTMLElement("script")}} embarqués ou d'URL `javascript:`, cette valeur est plus sécurisée que `unsafe-inline`. +- `'unsafe-inline'` + - : Permet l'usage de ressources embarquées, tels que des éléments {{HTMLElement("script")}} (sans `src`), d'URL `javascript:`, de gestionnaire d'évènement par attributs (`on<eventName>`), et d'éléments {{HTMLElement("style")}}. Vous devez mettre cette valeur entre guillemets. +- `'none'` + - : Aucune source n'est admise. Vous devez mettre cette valeur entre guillemets. +- 'nonce-\<base64-value>' + - : Une liste de permissions pour des scripts embarqués spécifiques en utilisant un nonce (_number used once_, nombre à usage unique) cryptographique. Le serveur doit générer un nonce à chaque fois qu'il transmet une réponse. Il est extrèmement important de fournir des nonces non prédictibles, puisque le contraire permettrait aisément de contourner la stratégie de sécurité. Voir [inline script non fiables](/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script) pour avoir un exemple. Spécifier un nonce implique que les navigateurs modernes ignoreront la valeur `'unsafe-inline'`, qui peut toutefois être laissée pour les anciens navigateurs ne supportant pas les nonces. +- '\<hash-algorithm>-\<base64-value>' + - : Un hash sha256, sha384 ou sha512 d'un `<script>` ou d'un `<style>`. Cette source est composée de deux parties séparées par un tiret : le nom de l'algorithme de chiffrage utilisé pour générer le hash à gauche et le hash encodé en base 64 à droite. Lors de la génération du hash, il ne faut pas inclure les balises `<script>` or `<style>` et tenir compte de la casse et des caractères blancs (espaces, retours à la ligne, etc.). Voir [inline script non fiables](/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script) pour en avoir un exemple. En CSP 2.0, cette valeur ne s'applique qu'aux scripts embarqués. CSP 3.0 le permet aussi dans le cas de scripts externes. +- 'strict-dynamic' + - : La valeur `strict-dynamic` spécifie que la confiance explicitement donnée à un script de la page, par le biais d'un nonce ou d'un hash, doit être propagée à tous les scripts chargés par celui-ci. En conséquence, toute les valeurs telles que `'self'` ou `'unsafe-inline'` et listes de permissions sont ignorées. Voir [script-src](/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#strict-dynamic) pour en avoir un exemple. +- 'report-sample' + - : Requiert qu'un échantillon du code violant la directive soit inclus dans le rapport envoyé. + +## Exemples + +### Absence d'héritage avec default-src + +S'il y a d'autres directives spécifiées, `default-src` ne les affecte pas. Soit l'en-tête suivant : + +```bash +Content-Security-Policy: default-src 'self'; script-src https://example.com +``` + +Est identique à : + +```bash +Content-Security-Policy: connect-src 'self'; font-src 'self'; frame-src 'self'; img-src 'self'; @@ -124,51 +121,29 @@ Content-Security-Policy: default-src <source> <source>; object-src 'self'; script-src https://example.com; style-src 'self'; - worker-src 'self'</pre> - -<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", "#directive-default-src", "default-src")}}</td> - <td>{{Spec2('CSP 3.0')}}</td> - <td>Ajout de <code>frame-src</code>, <code>manifest-src</code> et <code>worker-src</code> comme valeurs par défaut.</td> - </tr> - <tr> - <td>{{specName("CSP 1.1", "#directive-default-src", "default-src")}}</td> - <td>{{Spec2('CSP 1.1')}}</td> - <td>Définition initiale.</td> - </tr> - </tbody> -</table> + worker-src 'self' +``` + +## Spécifications -<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> +| Spécification | Statut | Commentaire | +| ------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------------------------------ | +| {{specName("CSP 3.0", "#directive-default-src", "default-src")}} | {{Spec2('CSP 3.0')}} | Ajout de `frame-src`, `manifest-src` et `worker-src` comme valeurs par défaut. | +| {{specName("CSP 1.1", "#directive-default-src", "default-src")}} | {{Spec2('CSP 1.1')}} | Définition initiale. | +## Compatibilité des navigateurs +{{Compat("http.headers.csp.Content-Security-Policy.default-src")}} -<p>{{Compat("http.headers.csp.Content-Security-Policy.default-src")}}</p> +## Voir aussi -<h2 id="Voir_aussi">Voir aussi</h2> +- {{HTTPHeader("Content-Security-Policy")}} +- CSP directives (<https://www.w3.org/TR/CSP/#csp-directives>): -<ul> - <li>{{HTTPHeader("Content-Security-Policy")}}</li> - <li>CSP directives (<a href="https://www.w3.org/TR/CSP/#csp-directives">https://www.w3.org/TR/CSP/#csp-directives</a>): - <ul> - <li>{{Glossary("Fetch directive")}}</li> - <li>{{Glossary("Document directive")}}</li> - <li>{{Glossary("Navigation directive")}}</li> - <li>{{Glossary("Reporting directive")}}</li> - <li><code><a href="/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests">upgrade-insecure-requests</a></code></li> - <li><code><a href="/docs/Web/HTTP/Headers/Content-Security-Policy/block-all-mixed-content">block-all-mixed-content</a></code></li> - <li><code><a href="/docs/Web/HTTP/Headers/Content-Security-Policy/require-sri-for">require-sri-for</a></code> {{experimental_inline}}</li> - </ul> - </li> -</ul> + - {{Glossary("Fetch directive")}} + - {{Glossary("Document directive")}} + - {{Glossary("Navigation directive")}} + - {{Glossary("Reporting directive")}} + - [`upgrade-insecure-requests`](/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests) + - [`block-all-mixed-content`](/docs/Web/HTTP/Headers/Content-Security-Policy/block-all-mixed-content) + - [`require-sri-for`](/docs/Web/HTTP/Headers/Content-Security-Policy/require-sri-for) {{experimental_inline}} |