LinkedIn Tag
Retour au Centre d'apprentissage

Qu'est-ce qu'une Politique de Sécurité du Contenu (CSP) ?

La Politique de Sécurité du Contenu (CSP) est une fonctionnalité de sécurité du navigateur qui a été mise en œuvre pour atténuer certains types d'attaques basées sur le navigateur, comme le cross-site scripting.

Oct 20, 2025
Simon Wijckmans
Simon Wijckmans Founder & CEO

Politique de Sécurité du Contenu

Une Politique de Sécurité du Contenu (CSP) est une norme de sécurité du navigateur définie par le World Wide Web Consortium (W3C). Elle aide les développeurs à protéger les sites web contre les attaques côté client telles que le cross-site scripting (XSS) et l’injection de données. En spécifiant des sources de confiance pour les scripts, les styles et les médias, une CSP agit comme une liste blanche que les navigateurs appliquent automatiquement dans le cadre du modèle de sécurité côté client du navigateur.

Résumé (TL;DR)

  • La CSP définit quelles sources un navigateur peut faire confiance.
  • Elle aide à bloquer les scripts injectés ou non autorisés.
  • Elle réduit les risques de XSS et d’exfiltration de données.
  • Meilleure utilisation avec la validation des entrées et HTTPS.
  • Nécessite une maintenance et des tests continus.

Comprendre la Politique de Sécurité du Contenu (CSP)

La Politique de Sécurité du Contenu (CSP) est une fonctionnalité de sécurité du navigateur qui a été mise en œuvre pour atténuer certains types d’attaques basées sur le navigateur, comme le cross-site scripting. La CSP a été standardisée par le World Wide Web Consortium (W3C) dans la spécification CSP Level 3, elle permet à un site web d’envoyer un ensemble de règles (via des en-têtes de réponse HTTP ou des balises à l’intérieur du HTML) qui indiquent au navigateur quelles sources de contenu sont autorisées.

Ces règles, appelées directives, spécifient les origines approuvées pour les scripts, les images, les styles, les iframes et plus encore. L’objectif principal de l’utilisation de CSP est d’avoir un contrôle total sur l’origine des scripts chargés, ainsi que de contrôler quels scripts une page est autorisée à exécuter, tentant ainsi d’empêcher l’exécution de scripts injectés ou non autorisés.

Par exemple, une directive CSP pourrait indiquer que les scripts ne doivent être chargés que depuis le propre domaine du site (fait en utilisant ‘self’), ou depuis des domaines de confiance spécifiques. Le navigateur bloquera alors tout fichier de script ou script inline qui n’est pas d’une source autorisée, fournissant une défense cruciale contre les attaques XSS où un attaquant tente d’injecter des balises

Comment fonctionne la Politique de Sécurité du Contenu (CSP)

Une Politique de Sécurité du Contenu est livrée à un navigateur via l’en-tête de réponse HTTP nommé `Content-Security-Policy`, ou via une balise meta dans le HTML. La politique consiste en directives séparées par des points-virgules, et chaque directive contrôle un type de ressource spécifique.

  • ‘script-src’ self : permet les scripts uniquement depuis la même origine. Tout
  • ‘connect-src’ self https://api.domain.com : permet les appels AJAX/XHR/fetch uniquement vers le même site, ou vers le domaine de confiance api.domain.com. Cela empêche le code malveillant d’exfiltrer des données vers des serveurs inconnus depuis le site.
  • img-src ‘self’ data : peut être utilisé pour charger uniquement des images depuis le même site et bloquer les images externes, ce qui peut être utilisé pour empêcher les fuites de données via les requêtes d’image.

Nonces CSP et Hashes CSP

CSP prend également en charge des mécanismes avancés tels que les nonces (‘nonce-abc123’) et les hashes (‘sha256-xyz…’). Ceux-ci permettent aux scripts inline de s’exécuter en toute sécurité en prouvant cryptographiquement leur intégrité. Au lieu d’interdire tout le code inline, les développeurs peuvent autoriser sélectivement des scripts spécifiques, améliorant la flexibilité sans sacrifier la sécurité.

Il existe une multitude d’autres directives qui peuvent être utilisées pour d’autres types de données comme les médias, les polices, les iframes, etc., mais l’idée centrale de l’utilisation d’une Politique de Sécurité du Contenu est de créer une liste blanche de sources de confiance. Lorsque le navigateur charge une page et demande quel contenu charger, il se référera d’abord à la CSP et appliquera ces règles à chaque chargement. Tout script ou ressource qui charge cette politique ne sera pas chargé. Pour un guide d’implémentation détaillé, consultez la feuille de référence OWASP CSP.

Directives CSP Courantes et Leur Objectif

DirectiveObjectifCas d’Usage Typique
default-srcDéfinit une politique de base pour toutes les ressources lorsqu’aucune autre règle ne s’applique.Commencez strict : default-src 'none';
script-srcContrôle quelles sources JavaScript sont autorisées.Liste blanche 'self', CDN, ou utilisez des scripts basés sur nonce/hash.
style-srcLimite d’où CSS peut être chargé.Utilisez 'self' ; évitez 'unsafe-inline' lorsque possible.
img-srcDéfinit les sources d’image de confiance.Empêchez les fuites de données via les appels d’image externes.
connect-srcRestreint les destinations AJAX, fetch et WebSocket.Bloquez l’exfiltration de données vers des domaines inconnus.
frame-ancestorsSpécifie quels sites peuvent intégrer vos pages dans des iframes.Empêchez le clickjacking : frame-ancestors 'none';
report-uri / report-toDéfinit où les rapports de violation CSP sont envoyés.Enregistrez et analysez les violations CSP pour ajuster la politique.

Comment une CSP peut Protéger un Site Web

Atténuation des attaques XSS : Dans une attaque de cross-site scripting, ou attaque XSS, un attaquant trouve généralement un moyen d’injecter et d’exécuter du code JavaScript malveillant dans votre page (comme sur une entrée non assainie). Par défaut, une CSP bloquera tout script inline de s’exécuter sur la page, sauf si une directive de politique l’autorise explicitement. Cela signifie qu’un attaquant qui injecte quelque chose comme `` dans une page, cela ne s’exécutera pas (sauf si ‘unsafe-inline’ est désactivé dans la CSP !)

Blocage des scripts tiers non autorisés : De nombreux sites ont des scripts tiers pour des choses comme l’analyse, le suivi des utilisateurs et la publicité. Avec une CSP, les propriétaires de sites peuvent limiter quels sites externes peuvent réellement fournir des scripts. Par exemple, si vous ne cherchez qu’à servir du contenu depuis `analytics.example.com` et rien d’autre depuis example.com, la directive script-src CSP de votre site peut explicitement autoriser uniquement cela.

Prévention de l’exfiltration de données : Comme mentionné précédemment, une CSP peut restreindre les actions sur une page qui peuvent être utilisées pour empêcher le code JavaScript malveillant d’envoyer des données vers un domaine contrôlé par un attaquant. L’utilisation de la directive `connect-src` bloque les requêtes réseau vers des serveurs non autorisés, et peut être utilisée en combinaison avec la directive `form-action` pour s’assurer que les données ne sont envoyées qu’à votre domaine.

Appliquer des pratiques de navigation sécurisées : Une CSP a des directives pour appliquer des comportements sécurisés qui améliorent la sécurité de votre site en général. Un exemple de cela est `upgrade-insecure-requests`, qui force le navigateur à charger toutes les ressources via HTTPS, empêchant les problèmes de contenu mixte et non sécurisé. Une autre directive est `frame-ancestors`, qui peut empêcher les attaques de clickjacking en interdisant l’intégration de votre page dans un cadre contrôlé par un attaquant.

Comment CSP Prévient les Attaques Basées sur le Navigateur

1. Atténuation des attaques XSS :

Dans une attaque de cross-site scripting, ou attaque XSS, un attaquant trouve généralement un moyen d’injecter et d’exécuter du code JavaScript malveillant dans votre page (comme sur une entrée non assainie). Par défaut, une CSP bloquera tout script inline de s’exécuter sur la page, sauf si une directive de politique l’autorise explicitement. Cela signifie qu’un attaquant qui injecte quelque chose comme `` dans une page, cela ne s’exécutera pas (sauf si ‘unsafe-inline’ est désactivé dans la CSP !)

2. Blocage des scripts tiers non autorisés :

De nombreux sites ont des scripts tiers pour des choses comme l’analyse, le suivi des utilisateurs et la publicité. Avec une CSP, les propriétaires de sites peuvent limiter quels sites externes peuvent réellement fournir des scripts. Par exemple, si vous ne cherchez qu’à servir du contenu depuis `analytics.example.com` et rien d’autre depuis example.com, la directive script-src CSP de votre site peut explicitement autoriser uniquement cela.

3. Prévention de l’exfiltration de données :

Comme mentionné précédemment, une CSP peut restreindre les actions sur une page qui peuvent être utilisées pour empêcher le code JavaScript malveillant d’envoyer des données vers un domaine contrôlé par un attaquant. L’utilisation de la directive `connect-src` bloque les requêtes réseau vers des serveurs non autorisés, et peut être utilisée en combinaison avec la directive `form-action` pour s’assurer que les données ne sont envoyées qu’à votre domaine.

4. Appliquer des pratiques de navigation sécurisées :

Une CSP a des directives pour appliquer des comportements sécurisés qui améliorent la sécurité de votre site en général.

  • Un exemple de cela est `upgrade-insecure-requests`, qui force le navigateur à charger toutes les ressources via HTTPS, empêchant les problèmes de contenu mixte et non sécurisé.
  • Une autre directive est `frame-ancestors`, qui peut empêcher les attaques de clickjacking en interdisant l’intégration de votre page dans un cadre contrôlé par un attaquant.

Combinées, ces politiques aboutissent à une base solide côté client pour les applications web modernes.

Limitations de Sécurité de CSP

L’utilisation d’une Politique de Sécurité du Contenu fournit une protection forte mais ce n’est pas une solution universelle pour votre site, comme le souligne notre article “Pourquoi la Politique de Sécurité du Contenu ne fonctionne pas”.

Les politiques peuvent dériver au fil du temps, et les listes blanches n’inspectent pas le comportement du code. Chaque navigateur majeur implémente CSP à sa manière, légèrement différente. Chrome, Firefox, Safari et Edge prennent tous en charge CSP Level 3 ; le comportement de rapport et les formats de violation peuvent varier. Pour valider et maintenir votre politique, testez-la régulièrement avec les outils de développement du navigateur et les scanners automatisés tels que Mozilla Observatory ou SecurityHeaders.io.

Associer une CSP avec un proxy côté client actif comme cside pour ajouter une inspection et un blocage en temps réel aux scripts tiers sur votre site vous donne une excellente couche de défense, avec la tranquillité d’esprit pour vos clients. D’un point de vue de gouvernance, documenter les mises à jour CSP et surveiller les rapports de violation améliore l’auditabilité et la conformité à long terme avec des cadres tels que ISO 27001 et OWASP ASVS.

Est-ce que CSP Fonctionne pour la Conformité PCI DSS 6.4.3 ?

Sous l’exigence 6.4.3 de PCI DSS 4.0.1, les commerçants doivent prouver que chaque script côté client est autorisé et prouver l’intégrité du script. CSP et SRI vous mènent en partie là. CSP limite quels domaines peuvent charger des scripts, et SRI vérifie que le code d’un fichier n’a pas changé. Mais ensemble, ils sont une solution statique à un problème dynamique. Les scripts dynamiques se mettent à jour et les hashes se cassent. La maintenance manuelle des listes CSP est presque impossible.

La plupart des sites modernes utilisent des scripts tiers dynamiques, donc ces contrôles se dégradent rapidement. Cette approche ne répondra généralement pas aux preuves requises nécessaires pour PCI 6.4.3.

Un Exemple d’une CSP Mal Configurée

Le jour où le check-out a cessé de fonctionner : Comment une CSP Stricte a Cassé la Production

Tout a commencé avec un simple nouveau déploiement. Rien de spécial, juste une nouvelle Politique de Sécurité du Contenu pour rendre une boutique de commerce électronique plus sécurisée et bloquer les attaquants de s’introduire avec du mauvais code.

Le default-src ‘none’ propre a été défini sans test. Et donc, au moment où la CSP a été activée, le site web a bloqué les services dont il avait réellement besoin. L’analyse a cessé de fonctionner et le pire de tout, le système de paiement a été bloqué. Les clients ne pouvaient pas compléter leurs commandes et le système de check-out s’est cassé. Les développeurs se sont mis au travail et ont changé l’en-tête en Content-Security-Policy-Report-Only et ont collecté les journaux de violation. À partir de là, ils ont construit une liste blanche (script-src ‘self’ https://pay.examplecase.com) avec tous les services dont la boutique web avait besoin pour fonctionner correctement.

Affiner la CSP a permis le déploiement sans interruption. Malheureusement, cette négligence est un accident courant lorsque les équipes gèrent CSP en interne. Oublier de mettre sur liste blanche un nouveau script marketing, des configurations techniques incorrectes, ou des problèmes avec des scripts dynamiques qui cassent les protocoles de hachage font de CSP un cauchemar à gérer à l’échelle.

Simon Wijckmans
Founder & CEO Simon Wijckmans

Founder and CEO of cside. Building better security against client-side executed attacks, and making solutions more accessible to smaller businesses. Web security is not an enterprise only problem.

Don't just take our word for it, ask AI

FAQ

Foire aux questions

La validation des entrées aide à réduire le risque d'injection XSS mais ne l'arrête pas nécessairement. Une CSP fournit une couche de défense supplémentaire en restreignant quelles ressources peuvent et ne peuvent pas être chargées en fonction de leur origine. Cela signifie que même si un morceau de code malveillant passe, le navigateur peut toujours l'empêcher de s'exécuter.

Malheureusement non. CSP peut réduire la surface d'attaque pour le cross-site scripting, mais ce n'est pas la solution miracle. Les mauvaises configurations de la CSP, les listes blanches trop larges, ou l'utilisation de `unsafe-inline` peuvent encore laisser votre site vulnérable. De nombreux sites web qui utilisent CSP autorisent encore googletagmanager.com et n'importe qui peut utiliser ce domaine pour héberger du code.

Si elle n'est pas implémentée correctement, oui. Une CSP peut bloquer des ressources légitimes telles que les bibliothèques tierces dont votre site web dépend. C'est aussi pourquoi il est important de tester et d'ajuster vos règles avant de les appliquer.

La maintenance peut être difficile, surtout si votre site dépend fortement d'outils tiers dynamiques. Les politiques nécessitent des mises à jour régulières à mesure que les outils se mettent à jour. Vos outils marketing ne vous avertiront probablement pas s'ils commencent à envoyer des données à un nouveau point de terminaison. Un service comme cside peut aider à faciliter une partie de la maintenance continue.

Généralement, non, mais il y a des mises en garde. Le navigateur vérifiera simplement les ressources contre la CSP avant de les bloquer. Les implications de performance sont négligeables par rapport aux avantages de sécurité que vous obtiendriez. La préoccupation est principalement le temps de configuration. Lors de l'utilisation de CSP à ses limites, c'est-à-dire en utilisant la longueur complète de l'en-tête CSP, cela augmente considérablement la taille du paquet, ce qui peut avoir des implications de performance à l'échelle ou pour les utilisateurs sur des connexions à faible bande passante.