# Vue d'ensemble (/fr/docs/web-security/policies/content-security-policy)



La Content Security Policy (CSP) est un header de réponse HTTP qui indique au navigateur
quelles ressources une page a le droit de charger et d'exécuter. C'est le navigateur qui
l'applique : un script, une feuille de style, une image, une frame ou une connexion
qu'aucune directive n'autorise est bloqué avant de s'exécuter. C'est ce qui fait de CSP
la principale défense contre le cross-site scripting (XSS) et l'injection de contenu, et
la raison pour laquelle c'est le seul contrôle qui arrête un script injecté même quand
l'injection, elle, a réussi.

Une politique est une liste de directives séparées par des points-virgules, chacune
nommant un type de ressource et les sources autorisées pour ce type :

```http
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-r4nd0m'; object-src 'none'; base-uri 'none'
```

CSP peut aussi signaler au lieu de bloquer. `Content-Security-Policy-Report-Only` porte la
même politique, n'applique rien, et envoie un
[report csp-violation](/fr/docs/web-security/reporting-api/reports/csp-violation) pour tout
ce qu'elle aurait bloqué. Vous mesurez donc une politique sur du trafic réel avant de
l'activer.

## Les éléments d'une politique [#les-éléments-dune-politique]

| Élément          | Ce que c'est                                                                                                                                       | Référence                                                                                        |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| Header           | `Content-Security-Policy` applique, `-Report-Only` se contente de signaler. Un élément `<meta>` peut aussi porter une politique, avec des limites. | [Headers](/fr/docs/web-security/policies/content-security-policy/introduction/csp-headers)       |
| Directive        | Le type de ressource concerné : `script-src`, `img-src`, `frame-ancestors`.                                                                        | [Directives](/fr/docs/web-security/policies/content-security-policy/introduction/csp-directives) |
| Liste de sources | Les valeurs après une directive : keywords, hosts, schemes, hashes, nonces.                                                                        | [Valeurs](/fr/docs/web-security/policies/content-security-policy/values/csp-keywords)            |
| Repli            | La plupart des directives de fetch se replient sur `default-src` quand elles sont absentes.                                                        | [`default-src`](/fr/docs/web-security/policies/content-security-policy/directives/default-src)   |
| Reporting        | `report-to` (et l'ancien `report-uri`) désignent où sont envoyées les violations.                                                                  | [`report-to`](/fr/docs/web-security/policies/content-security-policy/directives/report-to)       |

## Les directives par rôle [#les-directives-par-rôle]

Chaque directive a sa page. Groupées par ce qu'elles gouvernent :

| Rôle                     | Directives                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Fetch                    | [`default-src`](/fr/docs/web-security/policies/content-security-policy/directives/default-src), [`script-src`](/fr/docs/web-security/policies/content-security-policy/directives/script-src), [`script-src-elem`](/fr/docs/web-security/policies/content-security-policy/directives/script-src-elem), [`script-src-attr`](/fr/docs/web-security/policies/content-security-policy/directives/script-src-attr), [`style-src`](/fr/docs/web-security/policies/content-security-policy/directives/style-src), [`style-src-elem`](/fr/docs/web-security/policies/content-security-policy/directives/style-src-elem), [`style-src-attr`](/fr/docs/web-security/policies/content-security-policy/directives/style-src-attr), [`img-src`](/fr/docs/web-security/policies/content-security-policy/directives/img-src), [`font-src`](/fr/docs/web-security/policies/content-security-policy/directives/font-src), [`media-src`](/fr/docs/web-security/policies/content-security-policy/directives/media-src), [`object-src`](/fr/docs/web-security/policies/content-security-policy/directives/object-src), [`connect-src`](/fr/docs/web-security/policies/content-security-policy/directives/connect-src), [`manifest-src`](/fr/docs/web-security/policies/content-security-policy/directives/manifest-src), [`frame-src`](/fr/docs/web-security/policies/content-security-policy/directives/frame-src), [`child-src`](/fr/docs/web-security/policies/content-security-policy/directives/child-src), [`worker-src`](/fr/docs/web-security/policies/content-security-policy/directives/worker-src), [`fenced-frame-src`](/fr/docs/web-security/policies/content-security-policy/directives/fenced-frame-src) |
| Document                 | [`base-uri`](/fr/docs/web-security/policies/content-security-policy/directives/base-uri), [`sandbox`](/fr/docs/web-security/policies/content-security-policy/directives/sandbox)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Navigation               | [`form-action`](/fr/docs/web-security/policies/content-security-policy/directives/form-action), [`frame-ancestors`](/fr/docs/web-security/policies/content-security-policy/directives/frame-ancestors)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Reporting                | [`report-to`](/fr/docs/web-security/policies/content-security-policy/directives/report-to), [`report-uri`](/fr/docs/web-security/policies/content-security-policy/directives/report-uri)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Trusted Types            | [`require-trusted-types-for`](/fr/docs/web-security/policies/content-security-policy/directives/require-trusted-types-for), [`trusted-types`](/fr/docs/web-security/policies/content-security-policy/directives/trusted-types)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Autres                   | [`upgrade-insecure-requests`](/fr/docs/web-security/policies/content-security-policy/directives/upgrade-insecure-requests), [`webrtc`](/fr/docs/web-security/policies/content-security-policy/directives/webrtc)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Dépréciées ou supprimées | [`block-all-mixed-content`](/fr/docs/web-security/policies/content-security-policy/directives/block-all-mixed-content), [`plugin-types`](/fr/docs/web-security/policies/content-security-policy/directives/plugin-types), [`prefetch-src`](/fr/docs/web-security/policies/content-security-policy/directives/prefetch-src), [`navigate-to`](/fr/docs/web-security/policies/content-security-policy/directives/navigate-to), [`referrer`](/fr/docs/web-security/policies/content-security-policy/directives/referrer), [`require-sri-for`](/fr/docs/web-security/policies/content-security-policy/directives/require-sri-for)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

## Une politique à copier [#une-politique-à-copier]

```http
Content-Security-Policy:
  default-src 'self';
  script-src 'self' 'nonce-{ALEATOIRE}';
  style-src 'self' 'unsafe-inline';
  img-src 'self' data:;
  connect-src 'self';
  object-src 'none';
  base-uri 'none';
  frame-ancestors 'none';
  report-to csp-endpoint
```

`object-src 'none'` et `base-uri 'none'` ferment les deux contournements qui mettent en
défaut une politique par ailleurs stricte : le contenu de plugin, et un élément `<base>`
injecté qui redirige toutes les URL de script relatives. `frame-ancestors 'none'` est le
remplacement moderne de `X-Frame-Options`. Un nonce neuf à chaque réponse est ce qui vous
permet de retirer `'unsafe-inline'` de `script-src`, d'où vient la quasi-totalité de la
protection XSS de CSP.

## Sous-sections [#sous-sections]

<Cards>
  <Card title="Introduction" href="/fr/docs/web-security/policies/content-security-policy/introduction/what-is-csp" description="Ce qu'est CSP, et comment directives, valeurs et headers s'articulent." />

  <Card title="Report-Only" href="/fr/docs/web-security/policies/content-security-policy/report-only" description="Le header Content-Security-Policy-Report-Only, tester une politique sans l'appliquer." />

  <Card title="Valeurs" href="/fr/docs/web-security/policies/content-security-policy/values/csp-keywords" description="Ce qui va dans une directive : keywords, host- et scheme-source, hashes et nonce, et le keyword report-sha256." />

  <Card title="Directives" href="/fr/docs/web-security/policies/content-security-policy/introduction/csp-directives" description="Une page par directive, groupées par rôle : fetch, document, navigation, reporting, et plus." />
</Cards>

## Commencer ici [#commencer-ici]

* Vous débutez avec CSP ? Lisez [ce qu'est CSP](/fr/docs/web-security/policies/content-security-policy/introduction/what-is-csp).
* Vous écrivez votre première politique ? Partez de [`script-src`](/fr/docs/web-security/policies/content-security-policy/directives/script-src) et [`default-src`](/fr/docs/web-security/policies/content-security-policy/directives/default-src).
* Vous déployez en toute sécurité ? Déployez d'abord [`Content-Security-Policy-Report-Only`](/fr/docs/web-security/policies/content-security-policy/report-only) puis resserrez à partir des reports.
* Vous vérifiez une politique en production ? Passez-la dans l'[évaluateur CSP](/tools/csp-evaluator).

## Reporting [#reporting]

Chaque ressource bloquée produit un
[report csp-violation](/fr/docs/web-security/reporting-api/reports/csp-violation) qui nomme
la directive ayant bloqué et l'URL bloquée, livré via la
[Reporting API](/fr/docs/web-security/reporting-api). Ces reports sont la matière première
d'une politique : déployez-la en Report-Only, lisez ce qu'elle aurait bloqué, resserrez.
CentralCSP les collecte et les agrège par site, donc un déploiement s'appuie sur ce que les
navigateurs de vos visiteurs ont réellement observé plutôt que sur des suppositions.

## Sources [#sources]

* [W3C, Content Security Policy Level 3](https://www.w3.org/TR/CSP3/)
* [Brouillon éditorial CSP du W3C](https://w3c.github.io/webappsec-csp/)
* [MDN, Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy)
* [MDN, guide Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP)
