CYBERSÉCURITÉ WEB

Content Security Policy : comment elle protège concrètement un site web

Une CSP indique au navigateur quelles ressources il peut charger. Bien configurée, elle réduit fortement l’impact de nombreuses injections de contenu.

La Content Security Policy, ou CSP, est une politique de sécurité envoyée dans les en-têtes HTTP. Elle complète les protections du serveur en donnant au navigateur une liste précise des scripts, styles, images, polices et connexions autorisés.

À quoi sert une CSP ?

Lorsqu’une page contient du contenu injecté, le navigateur peut être amené à exécuter un script ou à charger une ressource contrôlée par un tiers. Une CSP restrictive réduit cette possibilité : tout ce qui n’est pas explicitement autorisé est bloqué.

Elle est particulièrement utile contre certaines conséquences d’une faille XSS. Elle peut empêcher l’exécution d’un script non autorisé, limiter les destinations auxquelles une page se connecte et interdire l’intégration du site dans une iframe malveillante.

Une CSP n’efface toutefois pas la vulnérabilité d’origine. La validation des entrées, l’échappement des sorties, les mises à jour et les autres contrôles applicatifs restent indispensables.

Les directives essentielles

DirectiveRôlePoint de vigilance
default-srcDéfinit la règle de repliCommencer par une valeur restrictive
script-srcContrôle les scriptsÉviter les sources larges et les scripts inline
style-srcContrôle les feuilles de styleExtraire progressivement les styles inline
img-srcContrôle les imagesN’autoriser que les schémas et domaines nécessaires
connect-srcLimite les appels réseau du navigateurRépertorier API, télémétrie et WebSocket utiles
frame-ancestorsDécide qui peut intégrer la pageUtiliser 'none' si aucune iframe n’est nécessaire
object-srcContrôle les contenus intégrés historiques'none' convient à la plupart des sites modernes
base-uriLimite la balise baseRéduit les détournements d’URL relatives

À quoi ressemble une politique restrictive ?

Content-Security-Policy: default-src 'self';
  script-src 'self';
  style-src 'self';
  img-src 'self';
  connect-src 'self';
  object-src 'none';
  base-uri 'self';
  frame-ancestors 'none'

Cet exemple n’est pas à copier aveuglément. Un site qui utilise un service externe, une police distante ou une API devra déclarer précisément la source correspondante. L’objectif n’est pas d’accumuler les domaines autorisés, mais de partir du besoin réel.

Les configurations qui donnent une fausse impression de sécurité

La présence de l’en-tête ne suffit pas. Une politique peut être techniquement valide tout en restant très permissive.

  • * autorise une source beaucoup trop large ;
  • 'unsafe-inline' permet l’exécution de contenu directement présent dans la page ;
  • 'unsafe-eval' autorise des formes d’évaluation dynamique risquées ;
  • des schémas génériques comme data: ou blob: élargissent les contenus acceptés ;
  • une longue liste de domaines tiers augmente la surface de confiance ;
  • une directive manquante peut laisser la règle de repli décider à sa place.

Le niveau de risque dépend du contexte. Par exemple, autoriser data: pour des images n’a pas le même impact que l’autoriser pour des scripts. L’analyse doit donc porter sur chaque directive et sur le type de ressource concerné.

Renforcer la CSP sans casser le site

  1. Inventorier les ressources réellement chargées. Relever les scripts, styles, images, polices, iframes et appels réseau nécessaires.
  2. Définir une politique restrictive. Commencer par default-src 'self', puis ouvrir seulement les directives justifiées.
  3. Tester en mode rapport. L’en-tête Content-Security-Policy-Report-Only permet d’observer les violations sans bloquer les ressources.
  4. Corriger les dépendances. Extraire les scripts et styles inline, supprimer les sources inutilisées et préférer les fichiers locaux lorsque cela a du sens.
  5. Activer progressivement le blocage. Vérifier les parcours essentiels sur ordinateur et mobile avant la généralisation.
  6. Surveiller les régressions. Une nouvelle intégration peut nécessiter un ajustement précis de la politique.

Comment vérifier la CSP d’un site ?

Dans les outils de développement du navigateur, ouvrez l’onglet Réseau, rechargez la page puis consultez les en-têtes de la réponse HTML. La console signale également les ressources bloquées et la directive concernée.

Vérifiez ensuite la politique effective : nombre de directives, sources trop larges, présence de valeurs risquées et protections comme frame-ancestors, object-src et base-uri. Un contrôle automatisé facilite cette lecture, mais le résultat doit toujours être interprété selon le fonctionnement réel du site.

Contrôlez les en-têtes de sécurité de votre domaine

L’audit TechAtelier analyse la CSP et les autres signaux HTTP d’un domaine afin de faire ressortir les directives absentes ou trop permissives.

Auditer un domaine

Une protection utile lorsqu’elle reste précise

Une bonne CSP repose sur un principe simple : autoriser uniquement ce dont la page a besoin. Elle doit être testée, comprise et maintenue comme le reste de la configuration de sécurité.

Plus la politique est précise, moins un contenu inattendu dispose de possibilités dans le navigateur. Le meilleur résultat combine une application correctement sécurisée, une CSP restrictive et une surveillance régulière des changements.

Publié le 1er septembre 2026.