Directives
Index des directives de la politique de sécurité du contenu par catégorie, fetch, document, navigation, reporting et Trusted Types, et leurs chaînes de repli.
Dernière mise à jour:
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 qu'une directive accepte et les headers qui la livrent.
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
lorsque vous ne les définissez pas.
| Directive | Contrôle | Se rabat sur |
|---|---|---|
| default-src | La liste de sources de repli pour la plupart des directives fetch | rien |
| script-src | JavaScript : éléments, inline, eval, handlers | default-src |
| script-src-elem | Éléments <script> | script-src |
| script-src-attr | Attributs d'event handler inline | script-src |
| style-src | Feuilles de style et styles inline | default-src |
| style-src-elem | <style> et <link rel=stylesheet> | style-src |
| style-src-attr | Attributs style= inline | style-src |
| img-src | Images et favicons | default-src |
| font-src | Chargements @font-face | default-src |
| media-src | <audio>, <video>, <track> | default-src |
| object-src | <object> et <embed> | default-src |
| connect-src | fetch, XHR, WebSocket, EventSource, Beacon | default-src |
| manifest-src | Manifeste d'application web | default-src |
| frame-src | Sources <frame> et <iframe> | child-src |
| child-src | Repli pour frame-src et worker-src | default-src |
| worker-src | Scripts Worker, SharedWorker, ServiceWorker | child-src |
| prefetch-src | Ressources préchargées et prérendues | default-src |
| 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
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 | Les URL qu'un <base href> peut définir |
| sandbox | Applique des flags de sandbox au document |
| 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
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 | Cibles <form action> autorisées |
| frame-ancestors | Quels parents peuvent intégrer cette page |
frame-ancestors est la directive anti-clickjacking et remplace
X-Frame-Options.
Elle ne peut pas non plus être définie via une balise <meta>.
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 | Nomme un groupe d'endpoint de reporting issu de la Reporting API |
| 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.
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
pour comprendre comment le câblage s'articule.
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 | Les connexions WebRTC (spec uniquement, aucune prise en charge navigateur pour le moment) |
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 : 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.
- 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-requestset le blocage par défaut du contenu mixte. - 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 : 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
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 | ⚠️ Déprécié | Rien |
| referrer | ⚠️ Déprécié | Le header Referrer-Policy |
| require-sri-for | ⚠️ Déprécié | Le header Integrity-Policy |
Une quatrième, disown-opener, a été abandonnée au profit de
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
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.
script-src-elemetscript-src-attrversscript-srcversdefault-src; la variante-attrsaute-elemet se rabat directement surscript-srcstyle-src-elemetstyle-src-attrversstyle-srcversdefault-src, avec le même sautframe-srcverschild-srcversdefault-srcworker-srcverschild-srcversscript-srcversdefault-src; le saut dechild-srcversscript-srcne s'applique qu'aux chargements de workersfenced-frame-src(expérimentale, Chromium uniquement) versframe-srcverschild-srcversdefault-srcconnect-src,font-src,img-src,manifest-src,media-src,object-src, et la dépréciéeprefetch-srcse rabattent chacune surdefault-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, ou scannez une page en production pour ses headers avec le scanner CSP.
Voir aussi
Sources
Ce que c'est
Une politique de sécurité du contenu est une liste d'autorisation en header HTTP que le navigateur applique pour bloquer XSS, clickjacking, contenu mixte et exfiltration.
Valeurs
Vue générale des types de valeurs acceptés par une directive CSP, mots-clés, sources hôte, sources de schéma, nonces, hashs et report-sample.