# Directives (/fr/docs/web-security/policies/content-security-policy/introduction/csp-directives)



Une politique de sécurité du contenu (CSP) est construite à partir de directives.
Chaque directive nomme un type de ressource ou un comportement et en fixe la
règle : quels hôtes de scripts sont autorisés, qui peut encadrer la page, où la
politique envoie ses rapports. Cette page regroupe chaque directive par catégorie
et relie chacune à sa propre référence, pour que vous trouviez la bonne directive
pour ce que vous voulez contrôler.

Pour le reste de la syntaxe de la politique, voir les
[valeurs](/fr/docs/web-security/policies/content-security-policy/introduction/csp-values)
qu'une directive accepte et les
[headers](/fr/docs/web-security/policies/content-security-policy/introduction/csp-headers)
qui la livrent.

## Directives fetch [#directives-fetch]

Les directives fetch contrôlent depuis où une page peut charger un type de
ressource donné. Elles prennent toutes une liste de sources séparées par des
espaces (ou `'none'`) et, sauf mention contraire ci-dessous, se rabattent sur
[default-src](/fr/docs/web-security/policies/content-security-policy/directives/default-src)
lorsque vous ne les définissez pas.

| Directive                                                                                              | Contrôle                                                          | Se rabat sur  |
| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | ------------- |
| [default-src](/fr/docs/web-security/policies/content-security-policy/directives/default-src)           | La liste de sources de repli pour la plupart des directives fetch | rien          |
| [script-src](/fr/docs/web-security/policies/content-security-policy/directives/script-src)             | JavaScript : éléments, inline, eval, handlers                     | `default-src` |
| [script-src-elem](/fr/docs/web-security/policies/content-security-policy/directives/script-src-elem)   | Éléments `<script>`                                               | `script-src`  |
| [script-src-attr](/fr/docs/web-security/policies/content-security-policy/directives/script-src-attr)   | Attributs d'event handler inline                                  | `script-src`  |
| [style-src](/fr/docs/web-security/policies/content-security-policy/directives/style-src)               | Feuilles de style et styles inline                                | `default-src` |
| [style-src-elem](/fr/docs/web-security/policies/content-security-policy/directives/style-src-elem)     | `<style>` et `<link rel=stylesheet>`                              | `style-src`   |
| [style-src-attr](/fr/docs/web-security/policies/content-security-policy/directives/style-src-attr)     | Attributs `style=` inline                                         | `style-src`   |
| [img-src](/fr/docs/web-security/policies/content-security-policy/directives/img-src)                   | Images et favicons                                                | `default-src` |
| [font-src](/fr/docs/web-security/policies/content-security-policy/directives/font-src)                 | Chargements `@font-face`                                          | `default-src` |
| [media-src](/fr/docs/web-security/policies/content-security-policy/directives/media-src)               | `<audio>`, `<video>`, `<track>`                                   | `default-src` |
| [object-src](/fr/docs/web-security/policies/content-security-policy/directives/object-src)             | `<object>` et `<embed>`                                           | `default-src` |
| [connect-src](/fr/docs/web-security/policies/content-security-policy/directives/connect-src)           | fetch, XHR, WebSocket, EventSource, Beacon                        | `default-src` |
| [manifest-src](/fr/docs/web-security/policies/content-security-policy/directives/manifest-src)         | Manifeste d'application web                                       | `default-src` |
| [frame-src](/fr/docs/web-security/policies/content-security-policy/directives/frame-src)               | Sources `<frame>` et `<iframe>`                                   | `child-src`   |
| [child-src](/fr/docs/web-security/policies/content-security-policy/directives/child-src)               | Repli pour frame-src et worker-src                                | `default-src` |
| [worker-src](/fr/docs/web-security/policies/content-security-policy/directives/worker-src)             | Scripts Worker, SharedWorker, ServiceWorker                       | `child-src`   |
| [prefetch-src](/fr/docs/web-security/policies/content-security-policy/directives/prefetch-src)         | Ressources préchargées et prérendues                              | `default-src` |
| [fenced-frame-src](/fr/docs/web-security/policies/content-security-policy/directives/fenced-frame-src) | Sources `<fencedframe>`                                           | `frame-src`   |

`prefetch-src` est déprécié et retiré de Chromium, et `fenced-frame-src` est
expérimental et propre à Chromium ; les pages de directives détaillent le statut
actuel de chacune.

## Directives document [#directives-document]

Ces directives régissent des propriétés du document lui-même plutôt qu'un fetch.
Aucune d'elles ne se rabat sur `default-src`.

| Directive                                                                                      | Contrôle                                   |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------ |
| [base-uri](/fr/docs/web-security/policies/content-security-policy/directives/base-uri)         | Les URL qu'un `<base href>` peut définir   |
| [sandbox](/fr/docs/web-security/policies/content-security-policy/directives/sandbox)           | Applique des flags de sandbox au document  |
| [plugin-types](/fr/docs/web-security/policies/content-security-policy/directives/plugin-types) | Types MIME de plugins autorisés (déprécié) |

`base-uri` n'a pas de repli, donc l'omettre laisse la page exposée à l'injection
de balise base. `sandbox` prend des tokens de sandbox plutôt qu'une liste de
sources et ne peut pas être défini via une balise `<meta>`. `plugin-types` est
déprécié ; utilisez plutôt `object-src 'none'`.

## Directives navigation [#directives-navigation]

Les directives de navigation restreignent où la page peut naviguer et qui peut
naviguer vers elle. Aucune ne se rabat sur `default-src`.

| Directive                                                                                            | Contrôle                                  |
| ---------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| [form-action](/fr/docs/web-security/policies/content-security-policy/directives/form-action)         | Cibles `<form action>` autorisées         |
| [frame-ancestors](/fr/docs/web-security/policies/content-security-policy/directives/frame-ancestors) | Quels parents peuvent intégrer cette page |

`frame-ancestors` est la directive anti-clickjacking et remplace
[X-Frame-Options](/fr/docs/web-security/security-headers/x-frame-options).
Elle ne peut pas non plus être définie via une balise `<meta>`.

## Directives reporting [#directives-reporting]

Les directives de reporting indiquent où le navigateur doit envoyer les rapports
de violation. Elles se configurent par politique et n'ont pas de repli.

| Directive                                                                                  | Contrôle                                                                                |
| ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- |
| [report-to](/fr/docs/web-security/policies/content-security-policy/directives/report-to)   | Nomme un groupe d'endpoint de reporting issu de la Reporting API                        |
| [report-uri](/fr/docs/web-security/policies/content-security-policy/directives/report-uri) | Poste les rapports directement vers une URI (déprécié, à conserver à côté de report-to) |

`report-to` référence un groupe défini dans le header
[Reporting-Endpoints](/fr/docs/web-security/reporting-api/headers/reporting-endpoints).
`report-uri` est le mécanisme historique et est ignoré là où `report-to` est pris
en charge. `report-to` est récemment devenu disponible dans les versions
actuelles de Chrome, Firefox et Safari, donc ne conservez `report-uri` que pour
les anciennes versions de navigateurs. Voir la
[vue d'ensemble des headers CSP](/fr/docs/web-security/policies/content-security-policy/introduction/csp-headers)
pour comprendre comment le câblage s'articule.

## Directives WebRTC [#directives-webrtc]

Le trafic WebRTC n'est couvert par aucune directive fetch, donc le brouillon de la
spec ajoute une directive dédiée. Elle prend `'allow'` ou `'block'` plutôt qu'une
liste de sources.

| Directive                                                                          | Contrôle                                                                                  |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| [webrtc](/fr/docs/web-security/policies/content-security-policy/directives/webrtc) | Les connexions WebRTC (spec uniquement, aucune prise en charge navigateur pour le moment) |

## Autres directives et Trusted Types [#autres-directives-et-trusted-types]

Ces directives n'entrent pas dans les catégories ci-dessus. Aucune ne se rabat sur
`default-src`.

* [upgrade-insecure-requests](/fr/docs/web-security/policies/content-security-policy/directives/upgrade-insecure-requests) :
  une directive de type flag qui réécrit les URL de sous-ressources et de
  navigation non sécurisées en HTTPS. Elle ne remplace pas [HSTS](/fr/docs/web-security/security-headers/strict-transport-security).
* [block-all-mixed-content](/fr/docs/web-security/policies/content-security-policy/directives/block-all-mixed-content) :
  une directive de type flag qui bloque toute sous-ressource HTTP sur une page
  HTTPS. Elle est dépréciée, remplacée par `upgrade-insecure-requests` et le
  blocage par défaut du contenu mixte.
* [require-trusted-types-for](/fr/docs/web-security/policies/content-security-policy/directives/require-trusted-types-for) :
  force les Trusted Types au niveau des sinks de DOM XSS ; sa valeur est le token
  `'script'`. Récemment devenu disponible dans les versions actuelles de Chrome, Firefox et Safari.
* [trusted-types](/fr/docs/web-security/policies/content-security-policy/directives/trusted-types) :
  une allowlist de noms de politiques Trusted Types qui contraint quelles
  politiques la page peut créer. Récemment devenu disponible dans les versions
  actuelles de Chrome, Firefox et Safari.

## Directives supprimées [#directives-supprimées]

Trois directives ont été retirées de la plateforme sans jamais être livrées et
conservent chacune une courte page de référence, car elles apparaissent encore
dans d'anciennes politiques et d'anciens billets de blog.

| Directive                                                                                            | Statut      | Ce qui la remplace                                                            |
| ---------------------------------------------------------------------------------------------------- | ----------- | ----------------------------------------------------------------------------- |
| [navigate-to](/fr/docs/web-security/policies/content-security-policy/directives/navigate-to)         | ⚠️ Déprécié | Rien                                                                          |
| [referrer](/fr/docs/web-security/policies/content-security-policy/directives/referrer)               | ⚠️ Déprécié | Le header `Referrer-Policy`                                                   |
| [require-sri-for](/fr/docs/web-security/policies/content-security-policy/directives/require-sri-for) | ⚠️ Déprécié | Le header [Integrity-Policy](/fr/docs/web-security/policies/integrity-policy) |

Une quatrième, `disown-opener`, a été abandonnée au profit de
[Cross-Origin-Opener-Policy](/fr/docs/web-security/policies/cross-origin-opener-policy)
et n'a pas de page dédiée. `prefetch-src` et `plugin-types`, listées plus haut
comme dépréciées, ont aussi leurs propres pages.

## Chaînes de repli [#chaînes-de-repli]

Lorsqu'une directive n'est pas définie, le navigateur parcourt une chaîne pour
trouver une règle. L'erreur de CSP la plus courante est de supposer que
`default-src` couvre tout ; elle ne couvre pas les directives de document, de
navigation, de reporting ni de Trusted Types, qui doivent donc chacune être
définies explicitement.

Le graphe couvre toutes les directives qui participent à une chaîne de repli.
⚠️ signale une directive dépréciée, 🧪 une directive expérimentale ; les
directives sans repli sont listées après le graphe, et la page de chaque
directive détaille son statut exact.

```mermaid
flowchart LR
  FFS["fenced-frame-src 🧪"] --> FS["frame-src"]
  FS --> CS["child-src"]
  WS["worker-src"] --> CS
  SSE["script-src-elem"] --> SS["script-src"]
  SSA["script-src-attr"] --> SS
  CS -->|workers uniquement| SS
  STE["style-src-elem"] --> ST["style-src"]
  STA["style-src-attr"] --> ST
  CS --> DS["default-src"]
  SS --> DS
  ST --> DS
  IMG["img-src"] --> DS
  FNT["font-src"] --> DS
  MED["media-src"] --> DS
  OBJ["object-src"] --> DS
  CON["connect-src"] --> DS
  MAN["manifest-src"] --> DS
  PFS["prefetch-src ⚠️"] --> DS
```

* `script-src-elem` et `script-src-attr` vers `script-src` vers `default-src` ;
  la variante `-attr` saute `-elem` et se rabat directement sur `script-src`
* `style-src-elem` et `style-src-attr` vers `style-src` vers `default-src`,
  avec le même saut
* `frame-src` vers `child-src` vers `default-src`
* `worker-src` vers `child-src` vers `script-src` vers `default-src` ; le saut
  de `child-src` vers `script-src` ne s'applique qu'aux chargements de workers
* `fenced-frame-src` (expérimentale, Chromium uniquement) vers `frame-src` vers
  `child-src` vers `default-src`
* `connect-src`, `font-src`, `img-src`, `manifest-src`, `media-src`,
  `object-src`, et la dépréciée `prefetch-src` se rabattent chacune sur
  `default-src`
* Sans repli (à définir explicitement) : `base-uri`, `form-action`,
  `frame-ancestors`, `sandbox`, `report-uri`, `report-to`,
  `upgrade-insecure-requests`, `block-all-mixed-content`,
  `require-trusted-types-for`, `trusted-types`, `webrtc`

Pour vérifier quelles directives manquent à une politique réelle, passez-la dans
le [évaluateur CSP](/tools/csp-evaluator), ou scannez une page en production pour
ses headers avec le [scanner CSP](/tools/csp-scanner).

## Voir aussi [#voir-aussi]

* [Ce qu'est la CSP](/fr/docs/web-security/policies/content-security-policy/introduction/what-is-csp)
* [Valeurs CSP](/fr/docs/web-security/policies/content-security-policy/introduction/csp-values)
* [Headers CSP](/fr/docs/web-security/policies/content-security-policy/introduction/csp-headers)
* [Suite CSP](/platform/csp-builder)

## Sources [#sources]

* [MDN, Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy)
* [W3C, Content Security Policy Level 3](https://www.w3.org/TR/CSP3/)
* [web.dev, Mitigate cross-site scripting with a strict CSP](https://web.dev/articles/strict-csp)
