Aide-mémoire Web et HTTP

Aide-mémoire des directives Content Security Policy

Toutes les directives CSP Level 3, ce qu'elles contrôlent et leur repli, les mots-clés de source, les limites de la balise meta et des politiques de départ.

Dernière vérification :

AdSense Placeholder
Slot: header_reference_page
Sur cette page

Une Content Security Policy indique au navigateur depuis quelles sources une page peut charger des scripts, des styles, des images et d'autres ressources ; c'est la principale défense en profondeur contre le cross-site scripting (XSS). Elle est envoyée dans l'en-tête Content-Security-Policy, sous forme d'une liste de directives séparées par des points-virgules. Créez-en une avec le générateur d'en-tête CSP et évaluez un site réel avec l'analyseur d'en-têtes de sécurité. Les chaînes de repli ci-dessous proviennent de la spécification CSP Level 3.

Directives de récupération et leurs replis

Si une directive manque, le navigateur utilise la suivante de sa chaîne de repli ; s'il n'y en a aucune, ce type de ressource n'est pas restreint.

Directive Contrôle Repli sur
default-src Repli de toutes les directives de récupération ci-dessous rien
script-src JavaScript (éléments, attributs, eval) default-src
script-src-elem Éléments <script> uniquement script-src → default-src
script-src-attr Gestionnaires d'événements en ligne comme onclick script-src → default-src
style-src Feuilles de style et styles en ligne default-src
style-src-elem <style> et <link rel="stylesheet"> style-src → default-src
style-src-attr Attributs style="..." style-src → default-src
img-src Images et favicons default-src
font-src Polices web default-src
connect-src fetch, XHR, WebSocket, EventSource, sendBeacon default-src
media-src <audio>, <video>, pistes de texte default-src
object-src Modules <object> et <embed> default-src
manifest-src Manifeste d'application web default-src
child-src Cadres et workers (si les deux suivantes sont absentes) default-src
frame-src Contenu de <iframe> et <frame> child-src → default-src
worker-src Workers web, partagés et de service child-src → script-src → default-src

Directives sans repli

default-src ne les couvre pas ; si vous les omettez, rien n'est restreint.

Directive Contrôle Valeur typique
base-uri URL autorisées dans <base href> 'self' ou 'none'
form-action Où les formulaires peuvent être envoyés 'self'
frame-ancestors Qui peut intégrer cette page dans un cadre (clickjacking) 'none' ou 'self' ; remplace X-Frame-Options
sandbox Applique à la page les restrictions d'un iframe en bac à sable sandbox allow-scripts
upgrade-insecure-requests Réécrit les URL http: des sous-ressources en https: aucune valeur
report-to Groupe de la Reporting API qui reçoit les rapports de violation un nom de groupe de Reporting-Endpoints
report-uri URL qui reçoit les rapports de violation (obsolète, encore très prise en charge) /csp-report
require-trusted-types-for Impose Trusted Types pour les points d'entrée du XSS DOM 'script'
trusted-types Nomme les politiques Trusted Types autorisées noms de politiques

Expressions de source

Expression Autorise
'none' Rien (doit être la seule valeur)
'self' L'origine de la page elle-même (même schéma, même hôte, même port)
https: Toute URL de ce schéma ; data:, blob: et les autres fonctionnent de la même façon
example.com Cet hôte ; *.example.com couvre ses sous-domaines, pas le domaine nu
https://cdn.example.com/js/ Ce préfixe de chemin sur cet hôte
'unsafe-inline' <script>/<style> en ligne et gestionnaires d'événements ; ignoré si un nonce ou un hash est présent
'unsafe-eval' eval(), new Function() et minuteries à chaîne
'wasm-unsafe-eval' Compiler du WebAssembly sans autoriser le eval de JavaScript
'nonce-<base64>' Éléments dont l'attribut nonce correspond ; générez une nouvelle valeur aléatoire à chaque réponse
'sha256-<base64>' Contenu en ligne dont le hash correspond (sha384- et sha512- fonctionnent aussi)
'strict-dynamic' Scripts chargés par un script déjà approuvé ; les listes d'hôtes et de schémas sont alors ignorées
'unsafe-hashes' Permet aux hashes de correspondre aux gestionnaires d'événements et aux attributs style
'report-sample' Inclut les 40 premiers caractères du code bloqué dans les rapports

Règles de livraison

  • En-tête ou meta. <meta http-equiv="Content-Security-Policy" content="..."> fonctionne, mais frame-ancestors, report-uri et sandbox y sont ignorés, et le mode rapport seul ne peut pas être défini par meta.
  • Rapport seul. Content-Security-Policy-Report-Only envoie des rapports de violation sans rien bloquer : déployez d'abord toute nouvelle politique ainsi.
  • Plusieurs politiques. Si une réponse porte deux en-têtes CSP, une ressource doit satisfaire les deux ; ajouter une politique ne peut que durcir, jamais assouplir.
  • Vérifiez ce qui est envoyé. Inspectez les vrais en-têtes de réponse d'une page avec le visionneur d'en-têtes HTTP.

Politiques de départ

Objectif Politique
Verrouiller un site statique default-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'
Scripts stricts avec nonce script-src 'nonce-R4nd0m' 'strict-dynamic'; object-src 'none'; base-uri 'none'
Autoriser un CDN et des images de partout en HTTPS default-src 'self'; script-src 'self' https://cdn.example.com; img-src 'self' https: data:
Seulement bloquer le clickjacking frame-ancestors 'self'
API qui ne renvoie que du JSON default-src 'none'; frame-ancestors 'none'

Le nonce R4nd0m représente une valeur nouvelle et imprévisible générée pour chaque réponse ; un nonce fixe n'apporte aucune protection.

Essayez ces outils

Voir aussi

  • Glossaire Politique de sécurité du contenu (CSP)
    Une politique de sécurité du contenu est un en-tête HTTP qui indique au navigateur de quelles sources une page peut charger scripts.
  • Glossaire Cross-site scripting (XSS)
    Le cross-site scripting (XSS) est une faille où un attaquant fait livrer par un site un script malveillant à d'autres utilisateurs.
  • Aide-mémoire Aide-mémoire des en-têtes HTTP
    En-têtes de requête et de réponse, directives Cache-Control, en-têtes de sécurité, attributs de cookie et en-têtes CORS.
  • Glossaire CORS
    Le CORS (Cross-Origin Resource Sharing) est le mécanisme du navigateur qui permet à un serveur d'autoriser des pages web d'autres origines.

Questions fréquemment posées

Parce que la même directive contient aussi un nonce ou un hash. Les navigateurs qui comprennent les nonces et les hashes ignorent alors 'unsafe-inline' : donnez le nonce au script ou retirez le nonce de la politique.

AdSense Placeholder
Slot: footer_leaderboard