CentralCSP
PolitiquesContent-Security-PolicyIntroduction

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.

DirectiveContrôleSe rabat sur
default-srcLa liste de sources de repli pour la plupart des directives fetchrien
script-srcJavaScript : éléments, inline, eval, handlersdefault-src
script-src-elemÉléments <script>script-src
script-src-attrAttributs d'event handler inlinescript-src
style-srcFeuilles de style et styles inlinedefault-src
style-src-elem<style> et <link rel=stylesheet>style-src
style-src-attrAttributs style= inlinestyle-src
img-srcImages et faviconsdefault-src
font-srcChargements @font-facedefault-src
media-src<audio>, <video>, <track>default-src
object-src<object> et <embed>default-src
connect-srcfetch, XHR, WebSocket, EventSource, Beacondefault-src
manifest-srcManifeste d'application webdefault-src
frame-srcSources <frame> et <iframe>child-src
child-srcRepli pour frame-src et worker-srcdefault-src
worker-srcScripts Worker, SharedWorker, ServiceWorkerchild-src
prefetch-srcRessources préchargées et prérenduesdefault-src
fenced-frame-srcSources <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.

DirectiveContrôle
base-uriLes URL qu'un <base href> peut définir
sandboxApplique des flags de sandbox au document
plugin-typesTypes 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.

DirectiveContrôle
form-actionCibles <form action> autorisées
frame-ancestorsQuels 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.

DirectiveContrôle
report-toNomme un groupe d'endpoint de reporting issu de la Reporting API
report-uriPoste 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.

DirectiveContrôle
webrtcLes 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-requests et 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.

DirectiveStatutCe 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-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, ou scannez une page en production pour ses headers avec le scanner CSP.

Voir aussi

Sources

On this page