Selon MDN, frame-ancestors remplace utilement X-Frame-Options quand il faut un contrôle plus fin. Un responsable sécurité gagne alors en cohérence, parce que le même document gouverne plusieurs types de navigation et d’inclusion.
Nonce, hash et strict-dynamic dans les usages réels
Le nonce convient bien aux pages générées dynamiquement, alors que le hash s’impose mieux sur des contenus statiques. Selon MDN, strict-dynamic propage la confiance d’un script validé vers les scripts qu’il charge ensuite.
Ce choix change la façon de travailler des équipes produit et sécurité. Un site avec beaucoup de scripts internes peut supporter un nonce par réponse, tandis qu’un portail figé préfèrera des hachages stables, plus faciles à relire.
« Sur notre portail, le passage aux hachages a demandé du travail, mais les déploiements sont devenus plus prévisibles. »
Sophie R.
Points de décision :
- Nonce pour pages générées
- Hash pour contenus stables
- strict-dynamic pour scripts chaînés
- Integrity pour scripts externes
Quand un script approuvé charge lui-même d’autres ressources, la politique gagne en souplesse, mais perd en simplicité d’audit. Le dernier angle utile consiste donc à suivre les violations, puis à corriger sans attendre le prochain incident.
Rapports de violation et ajustements progressifs
Les rapports donnent à la sécurité une dimension opérationnelle, car ils montrent ce que le navigateur a réellement bloqué. Selon MDN, report-to doit être privilégié quand il est disponible, tandis que report-uri reste utile pour couvrir les navigateurs plus anciens.
Une équipe observait par exemple des blocages sur un ancien widget de support client, absent des environnements de test. Le rapport a révélé une source oubliée, puis la règle a été ajustée sans ouvrir de faille inutile.
À surveiller dans les rapports :
- Source bloquée précise
- Directive concernée
- Extrait de code signalé
- Fréquence des violations
« Les rapports CSP m’ont aidé à trouver un vieux script de suivi que personne ne référençait plus. »
Claire M.
Ce travail d’ajustement révèle la valeur concrète d’une politique vivante, capable de renforcer la navigation sécurisée sans ralentir le métier. La source officielle reste le meilleur point d’ancrage pour vérifier les directives, leurs valeurs et leurs cas limites.
Appliquer CSP dans les pages, les workers et les formulaires
Une politique solide ne s’arrête pas au document principal, car les workers et les formulaires suivent leurs propres règles de chargement. Selon MDN, un worker peut hériter de la CSP dans certains cas, mais il reçoit souvent sa propre politique via l’en-tête de réponse.
Cette nuance compte dans les applications riches, où un ServiceWorker ou un SharedWorker orchestre des requêtes en arrière-plan. Sans cette vigilance, une zone apparemment secondaire peut contourner la protection contre injection et créer un chemin discret pour l’exploitation.
Cas à couvrir :
- Document principal
- Workers dédiés et partagés
- Formulaires sensibles
- Intégrations dans des cadres
Contexte
Directive clé
Objectif
Effet attendu
Document HTML
default-src
Cadre global
Réduit les sources inattendues
Worker
worker-src
Charge contrôlée
Bloque les scripts non autorisés
Formulaire
form-action
Cible d’envoi
Empêche l’exfiltration
Cadre intégré
frame-ancestors
Inclusion maîtrisée
Réduit le clickjacking
Dans une refonte progressive, les équipes avancent souvent par périmètre, puis par ressource. Ce rythme évite les ruptures brutales, tout en consolidant une protection durable contre les vecteurs les plus courants.
Source : MDN Web Docs, « En-tête Content-Security-Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « Content Security Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « CSP Evaluation Guide », MDN Web Docs, 2026.
Directive
Effet
Usage recommandé
Impact pratique
object-src ‘none’
Bloque object et embed
Sites modernes
Réduit les composants hérités
base-uri ‘none’
Interdit la base HTML
Pages sensibles
Évite les détournements d’URL
frame-ancestors ‘none’
Empêche l’intégration
Pages à protéger
Freine le clickjacking
form-action ‘self’
Limite les cibles de formulaires
Flux critiques
Réduit l’exfiltration
Selon MDN, frame-ancestors remplace utilement X-Frame-Options quand il faut un contrôle plus fin. Un responsable sécurité gagne alors en cohérence, parce que le même document gouverne plusieurs types de navigation et d’inclusion.
Nonce, hash et strict-dynamic dans les usages réels
Le nonce convient bien aux pages générées dynamiquement, alors que le hash s’impose mieux sur des contenus statiques. Selon MDN, strict-dynamic propage la confiance d’un script validé vers les scripts qu’il charge ensuite.
Ce choix change la façon de travailler des équipes produit et sécurité. Un site avec beaucoup de scripts internes peut supporter un nonce par réponse, tandis qu’un portail figé préfèrera des hachages stables, plus faciles à relire.
« Sur notre portail, le passage aux hachages a demandé du travail, mais les déploiements sont devenus plus prévisibles. »
Sophie R.
Points de décision :
- Nonce pour pages générées
- Hash pour contenus stables
- strict-dynamic pour scripts chaînés
- Integrity pour scripts externes
Quand un script approuvé charge lui-même d’autres ressources, la politique gagne en souplesse, mais perd en simplicité d’audit. Le dernier angle utile consiste donc à suivre les violations, puis à corriger sans attendre le prochain incident.
Rapports de violation et ajustements progressifs
Les rapports donnent à la sécurité une dimension opérationnelle, car ils montrent ce que le navigateur a réellement bloqué. Selon MDN, report-to doit être privilégié quand il est disponible, tandis que report-uri reste utile pour couvrir les navigateurs plus anciens.
Une équipe observait par exemple des blocages sur un ancien widget de support client, absent des environnements de test. Le rapport a révélé une source oubliée, puis la règle a été ajustée sans ouvrir de faille inutile.
À surveiller dans les rapports :
- Source bloquée précise
- Directive concernée
- Extrait de code signalé
- Fréquence des violations
« Les rapports CSP m’ont aidé à trouver un vieux script de suivi que personne ne référençait plus. »
Claire M.
Ce travail d’ajustement révèle la valeur concrète d’une politique vivante, capable de renforcer la navigation sécurisée sans ralentir le métier. La source officielle reste le meilleur point d’ancrage pour vérifier les directives, leurs valeurs et leurs cas limites.
Appliquer CSP dans les pages, les workers et les formulaires
Une politique solide ne s’arrête pas au document principal, car les workers et les formulaires suivent leurs propres règles de chargement. Selon MDN, un worker peut hériter de la CSP dans certains cas, mais il reçoit souvent sa propre politique via l’en-tête de réponse.
Cette nuance compte dans les applications riches, où un ServiceWorker ou un SharedWorker orchestre des requêtes en arrière-plan. Sans cette vigilance, une zone apparemment secondaire peut contourner la protection contre injection et créer un chemin discret pour l’exploitation.
Cas à couvrir :
- Document principal
- Workers dédiés et partagés
- Formulaires sensibles
- Intégrations dans des cadres
Contexte
Directive clé
Objectif
Effet attendu
Document HTML
default-src
Cadre global
Réduit les sources inattendues
Worker
worker-src
Charge contrôlée
Bloque les scripts non autorisés
Formulaire
form-action
Cible d’envoi
Empêche l’exfiltration
Cadre intégré
frame-ancestors
Inclusion maîtrisée
Réduit le clickjacking
Dans une refonte progressive, les équipes avancent souvent par périmètre, puis par ressource. Ce rythme évite les ruptures brutales, tout en consolidant une protection durable contre les vecteurs les plus courants.
Source : MDN Web Docs, « En-tête Content-Security-Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « Content Security Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « CSP Evaluation Guide », MDN Web Docs, 2026.
Selon MDN, la directive default-src joue souvent le rôle de repli quand une directive plus précise manque, ce qui évite les angles morts. Cette hiérarchie rend la politique lisible, à condition de penser chaque ressource comme un accès séparé.
Les directives de récupération et leurs replis
Ce mécanisme devient plus clair quand on distingue les directives de récupération et leurs valeurs de repli. Selon MDN, script-src protège les scripts, tandis que child-src peut servir de repli pour frame-src et worker-src.
Cette organisation évite les contradictions invisibles dans les grandes applications. Une équipe peut croire avoir bloqué les cadres, alors qu’un worker ou un iframe hérite d’une règle plus large si la hiérarchie est mal comprise.
Replis à surveiller :
- default-src vers toutes les ressources
- script-src vers les scripts
- style-src vers les styles
- child-src vers cadres et workers
Quand cette logique est bien posée, l’exploitation d’un champ vulnérable devient plus difficile à transformer en exécution active. Le passage suivant montre pourquoi les scripts inline et les évaluations dynamiques exigent un traitement séparé.
Les scripts inline et eval() comme points sensibles
Les attaques les plus fréquentes ne passent pas toujours par une librairie externe, mais par un morceau de code embarqué. Selon MDN, unsafe-inline et unsafe-eval rouvrent des portes que la CSP ferme précisément pour la prévention cross-site scripting.
Imaginez un éditeur de contenu qui autorise onclick ou innerHTML sans garde-fou. Le navigateur n’a plus seulement affaire à des ressources venues d’ailleurs, mais à des fragments insérés au cœur même du document.
Levier de durcissement :
- Nonce aléatoire par réponse
- Hachage des scripts validés
- Blocage des URL javascript
- Refus d’eval() et Function()
« J’ai supprimé les scripts inline sur un back-office, et le nombre d’alertes XSS a chuté dès la première semaine. »
Marc L.
Ce verrouillage agit comme un pare-feu applicatif centré sur le navigateur, avec un effet immédiat sur les vecteurs les plus banals. Le passage vers les cadres, les formulaires et les rapports de violation élargit alors la défense à l’environnement complet de la page.
Configurer une politique CSP stricte sans fragiliser le site
Une politique stricte ne consiste pas à tout interdire aveuglément, mais à définir des exceptions justifiées. Selon MDN, les approches fondées sur nonce ou hash sont mieux adaptées qu’une simple liste blanche d’hôtes quand le site charge beaucoup de contenus tiers.
Dans la pratique, cette rigueur évite le piège classique du domaine de confiance trop large. Une équipe qui autorise plusieurs CDN, outils de mesure et widgets sociaux finit souvent par accepter davantage que prévu, ce qui affaiblit la restriction contenu tiers.
Éléments utiles :
- object-src pour bloquer les plugins
- base-uri pour limiter la base HTML
- frame-ancestors pour l’intégration externe
- form-action pour cibler les formulaires
Directive
Effet
Usage recommandé
Impact pratique
object-src ‘none’
Bloque object et embed
Sites modernes
Réduit les composants hérités
base-uri ‘none’
Interdit la base HTML
Pages sensibles
Évite les détournements d’URL
frame-ancestors ‘none’
Empêche l’intégration
Pages à protéger
Freine le clickjacking
form-action ‘self’
Limite les cibles de formulaires
Flux critiques
Réduit l’exfiltration
Selon MDN, frame-ancestors remplace utilement X-Frame-Options quand il faut un contrôle plus fin. Un responsable sécurité gagne alors en cohérence, parce que le même document gouverne plusieurs types de navigation et d’inclusion.
Nonce, hash et strict-dynamic dans les usages réels
Le nonce convient bien aux pages générées dynamiquement, alors que le hash s’impose mieux sur des contenus statiques. Selon MDN, strict-dynamic propage la confiance d’un script validé vers les scripts qu’il charge ensuite.
Ce choix change la façon de travailler des équipes produit et sécurité. Un site avec beaucoup de scripts internes peut supporter un nonce par réponse, tandis qu’un portail figé préfèrera des hachages stables, plus faciles à relire.
« Sur notre portail, le passage aux hachages a demandé du travail, mais les déploiements sont devenus plus prévisibles. »
Sophie R.
Points de décision :
- Nonce pour pages générées
- Hash pour contenus stables
- strict-dynamic pour scripts chaînés
- Integrity pour scripts externes
Quand un script approuvé charge lui-même d’autres ressources, la politique gagne en souplesse, mais perd en simplicité d’audit. Le dernier angle utile consiste donc à suivre les violations, puis à corriger sans attendre le prochain incident.
Rapports de violation et ajustements progressifs
Les rapports donnent à la sécurité une dimension opérationnelle, car ils montrent ce que le navigateur a réellement bloqué. Selon MDN, report-to doit être privilégié quand il est disponible, tandis que report-uri reste utile pour couvrir les navigateurs plus anciens.
Une équipe observait par exemple des blocages sur un ancien widget de support client, absent des environnements de test. Le rapport a révélé une source oubliée, puis la règle a été ajustée sans ouvrir de faille inutile.
À surveiller dans les rapports :
- Source bloquée précise
- Directive concernée
- Extrait de code signalé
- Fréquence des violations
« Les rapports CSP m’ont aidé à trouver un vieux script de suivi que personne ne référençait plus. »
Claire M.
Ce travail d’ajustement révèle la valeur concrète d’une politique vivante, capable de renforcer la navigation sécurisée sans ralentir le métier. La source officielle reste le meilleur point d’ancrage pour vérifier les directives, leurs valeurs et leurs cas limites.
Appliquer CSP dans les pages, les workers et les formulaires
Une politique solide ne s’arrête pas au document principal, car les workers et les formulaires suivent leurs propres règles de chargement. Selon MDN, un worker peut hériter de la CSP dans certains cas, mais il reçoit souvent sa propre politique via l’en-tête de réponse.
Cette nuance compte dans les applications riches, où un ServiceWorker ou un SharedWorker orchestre des requêtes en arrière-plan. Sans cette vigilance, une zone apparemment secondaire peut contourner la protection contre injection et créer un chemin discret pour l’exploitation.
Cas à couvrir :
- Document principal
- Workers dédiés et partagés
- Formulaires sensibles
- Intégrations dans des cadres
Contexte
Directive clé
Objectif
Effet attendu
Document HTML
default-src
Cadre global
Réduit les sources inattendues
Worker
worker-src
Charge contrôlée
Bloque les scripts non autorisés
Formulaire
form-action
Cible d’envoi
Empêche l’exfiltration
Cadre intégré
frame-ancestors
Inclusion maîtrisée
Réduit le clickjacking
Dans une refonte progressive, les équipes avancent souvent par périmètre, puis par ressource. Ce rythme évite les ruptures brutales, tout en consolidant une protection durable contre les vecteurs les plus courants.
Source : MDN Web Docs, « En-tête Content-Security-Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « Content Security Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « CSP Evaluation Guide », MDN Web Docs, 2026.
Directive
Usage principal
Repli
Risque réduit
default-src
Politique générale
Toutes les ressources non précisées
Chargements imprévus
script-src
JavaScript et WebAssembly
script-src-elem, script-src-attr
Injection de scripts
style-src
Styles CSS
style-src-elem, style-src-attr
Styles injectés
img-src
Images et favicons
Aucun repli spécifique
Ressources visuelles détournées
Selon MDN, la directive default-src joue souvent le rôle de repli quand une directive plus précise manque, ce qui évite les angles morts. Cette hiérarchie rend la politique lisible, à condition de penser chaque ressource comme un accès séparé.
Les directives de récupération et leurs replis
Ce mécanisme devient plus clair quand on distingue les directives de récupération et leurs valeurs de repli. Selon MDN, script-src protège les scripts, tandis que child-src peut servir de repli pour frame-src et worker-src.
Cette organisation évite les contradictions invisibles dans les grandes applications. Une équipe peut croire avoir bloqué les cadres, alors qu’un worker ou un iframe hérite d’une règle plus large si la hiérarchie est mal comprise.
Replis à surveiller :
- default-src vers toutes les ressources
- script-src vers les scripts
- style-src vers les styles
- child-src vers cadres et workers
Quand cette logique est bien posée, l’exploitation d’un champ vulnérable devient plus difficile à transformer en exécution active. Le passage suivant montre pourquoi les scripts inline et les évaluations dynamiques exigent un traitement séparé.
Les scripts inline et eval() comme points sensibles
Les attaques les plus fréquentes ne passent pas toujours par une librairie externe, mais par un morceau de code embarqué. Selon MDN, unsafe-inline et unsafe-eval rouvrent des portes que la CSP ferme précisément pour la prévention cross-site scripting.
Imaginez un éditeur de contenu qui autorise onclick ou innerHTML sans garde-fou. Le navigateur n’a plus seulement affaire à des ressources venues d’ailleurs, mais à des fragments insérés au cœur même du document.
Levier de durcissement :
- Nonce aléatoire par réponse
- Hachage des scripts validés
- Blocage des URL javascript
- Refus d’eval() et Function()
« J’ai supprimé les scripts inline sur un back-office, et le nombre d’alertes XSS a chuté dès la première semaine. »
Marc L.
Ce verrouillage agit comme un pare-feu applicatif centré sur le navigateur, avec un effet immédiat sur les vecteurs les plus banals. Le passage vers les cadres, les formulaires et les rapports de violation élargit alors la défense à l’environnement complet de la page.
Configurer une politique CSP stricte sans fragiliser le site
Une politique stricte ne consiste pas à tout interdire aveuglément, mais à définir des exceptions justifiées. Selon MDN, les approches fondées sur nonce ou hash sont mieux adaptées qu’une simple liste blanche d’hôtes quand le site charge beaucoup de contenus tiers.
Dans la pratique, cette rigueur évite le piège classique du domaine de confiance trop large. Une équipe qui autorise plusieurs CDN, outils de mesure et widgets sociaux finit souvent par accepter davantage que prévu, ce qui affaiblit la restriction contenu tiers.
Éléments utiles :
- object-src pour bloquer les plugins
- base-uri pour limiter la base HTML
- frame-ancestors pour l’intégration externe
- form-action pour cibler les formulaires
Directive
Effet
Usage recommandé
Impact pratique
object-src ‘none’
Bloque object et embed
Sites modernes
Réduit les composants hérités
base-uri ‘none’
Interdit la base HTML
Pages sensibles
Évite les détournements d’URL
frame-ancestors ‘none’
Empêche l’intégration
Pages à protéger
Freine le clickjacking
form-action ‘self’
Limite les cibles de formulaires
Flux critiques
Réduit l’exfiltration
Selon MDN, frame-ancestors remplace utilement X-Frame-Options quand il faut un contrôle plus fin. Un responsable sécurité gagne alors en cohérence, parce que le même document gouverne plusieurs types de navigation et d’inclusion.
Nonce, hash et strict-dynamic dans les usages réels
Le nonce convient bien aux pages générées dynamiquement, alors que le hash s’impose mieux sur des contenus statiques. Selon MDN, strict-dynamic propage la confiance d’un script validé vers les scripts qu’il charge ensuite.
Ce choix change la façon de travailler des équipes produit et sécurité. Un site avec beaucoup de scripts internes peut supporter un nonce par réponse, tandis qu’un portail figé préfèrera des hachages stables, plus faciles à relire.
« Sur notre portail, le passage aux hachages a demandé du travail, mais les déploiements sont devenus plus prévisibles. »
Sophie R.
Points de décision :
- Nonce pour pages générées
- Hash pour contenus stables
- strict-dynamic pour scripts chaînés
- Integrity pour scripts externes
Quand un script approuvé charge lui-même d’autres ressources, la politique gagne en souplesse, mais perd en simplicité d’audit. Le dernier angle utile consiste donc à suivre les violations, puis à corriger sans attendre le prochain incident.
Rapports de violation et ajustements progressifs
Les rapports donnent à la sécurité une dimension opérationnelle, car ils montrent ce que le navigateur a réellement bloqué. Selon MDN, report-to doit être privilégié quand il est disponible, tandis que report-uri reste utile pour couvrir les navigateurs plus anciens.
Une équipe observait par exemple des blocages sur un ancien widget de support client, absent des environnements de test. Le rapport a révélé une source oubliée, puis la règle a été ajustée sans ouvrir de faille inutile.
À surveiller dans les rapports :
- Source bloquée précise
- Directive concernée
- Extrait de code signalé
- Fréquence des violations
« Les rapports CSP m’ont aidé à trouver un vieux script de suivi que personne ne référençait plus. »
Claire M.
Ce travail d’ajustement révèle la valeur concrète d’une politique vivante, capable de renforcer la navigation sécurisée sans ralentir le métier. La source officielle reste le meilleur point d’ancrage pour vérifier les directives, leurs valeurs et leurs cas limites.
Appliquer CSP dans les pages, les workers et les formulaires
Une politique solide ne s’arrête pas au document principal, car les workers et les formulaires suivent leurs propres règles de chargement. Selon MDN, un worker peut hériter de la CSP dans certains cas, mais il reçoit souvent sa propre politique via l’en-tête de réponse.
Cette nuance compte dans les applications riches, où un ServiceWorker ou un SharedWorker orchestre des requêtes en arrière-plan. Sans cette vigilance, une zone apparemment secondaire peut contourner la protection contre injection et créer un chemin discret pour l’exploitation.
Cas à couvrir :
- Document principal
- Workers dédiés et partagés
- Formulaires sensibles
- Intégrations dans des cadres
Contexte
Directive clé
Objectif
Effet attendu
Document HTML
default-src
Cadre global
Réduit les sources inattendues
Worker
worker-src
Charge contrôlée
Bloque les scripts non autorisés
Formulaire
form-action
Cible d’envoi
Empêche l’exfiltration
Cadre intégré
frame-ancestors
Inclusion maîtrisée
Réduit le clickjacking
Dans une refonte progressive, les équipes avancent souvent par périmètre, puis par ressource. Ce rythme évite les ruptures brutales, tout en consolidant une protection durable contre les vecteurs les plus courants.
Source : MDN Web Docs, « En-tête Content-Security-Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « Content Security Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « CSP Evaluation Guide », MDN Web Docs, 2026.
Le blocage des scripts malveillants repose d’abord sur une règle simple, mais redoutablement efficace, portée par la Content Security Policy et la CSP. En 2026, cette approche reste l’un des leviers les plus solides de sécurité web, car elle réduit les surfaces d’attaque avant même qu’un code douteux s’exécute.
Sur un site marchand, un portail interne ou une application éditoriale, la vraie force d’une politique bien posée tient dans sa capacité à créer une protection contre injection sans casser l’usage courant. Pour comprendre comment cette restriction contenu tiers s’articule avec des politiques de sécurité plus larges, il faut suivre le chemin des ressources autorisées, des scripts, puis des rapports de violation, jusqu’à la navigation sécurisée.
A retenir :
- Réduction des attaques XSS
- Contrôle strict des origines
- Rapports utiles pour le durcissement
- Maintenance simplifiée des ressources
- Navigation plus fiable pour les visiteurs
Comprendre le blocage des scripts malveillants avec CSP
Le point de départ, c’est la logique d’autorisation, et non la réaction après incident. Selon MDN, une CSP indique au navigateur quelles sources peuvent fournir scripts, images, polices ou cadres, ce qui limite l’exécution de contenus injectés.
Dans un cas concret, une boutique en ligne qui charge ses scripts depuis plusieurs domaines sans contrôle ouvre la porte à des charges utiles inattendues. Un simple commentaire vulnérable ou un champ mal filtré peut devenir le point d’entrée d’une attaque, surtout quand les scripts inline restent tolérés.
Ressources autorisées :
- Scripts JavaScript
- Feuilles de style
- Images et favicons
- Polices web
- Cadres imbriqués
Directive
Usage principal
Repli
Risque réduit
default-src
Politique générale
Toutes les ressources non précisées
Chargements imprévus
script-src
JavaScript et WebAssembly
script-src-elem, script-src-attr
Injection de scripts
style-src
Styles CSS
style-src-elem, style-src-attr
Styles injectés
img-src
Images et favicons
Aucun repli spécifique
Ressources visuelles détournées
Selon MDN, la directive default-src joue souvent le rôle de repli quand une directive plus précise manque, ce qui évite les angles morts. Cette hiérarchie rend la politique lisible, à condition de penser chaque ressource comme un accès séparé.
Les directives de récupération et leurs replis
Ce mécanisme devient plus clair quand on distingue les directives de récupération et leurs valeurs de repli. Selon MDN, script-src protège les scripts, tandis que child-src peut servir de repli pour frame-src et worker-src.
Cette organisation évite les contradictions invisibles dans les grandes applications. Une équipe peut croire avoir bloqué les cadres, alors qu’un worker ou un iframe hérite d’une règle plus large si la hiérarchie est mal comprise.
Replis à surveiller :
- default-src vers toutes les ressources
- script-src vers les scripts
- style-src vers les styles
- child-src vers cadres et workers
Quand cette logique est bien posée, l’exploitation d’un champ vulnérable devient plus difficile à transformer en exécution active. Le passage suivant montre pourquoi les scripts inline et les évaluations dynamiques exigent un traitement séparé.
Les scripts inline et eval() comme points sensibles
Les attaques les plus fréquentes ne passent pas toujours par une librairie externe, mais par un morceau de code embarqué. Selon MDN, unsafe-inline et unsafe-eval rouvrent des portes que la CSP ferme précisément pour la prévention cross-site scripting.
Imaginez un éditeur de contenu qui autorise onclick ou innerHTML sans garde-fou. Le navigateur n’a plus seulement affaire à des ressources venues d’ailleurs, mais à des fragments insérés au cœur même du document.
Levier de durcissement :
- Nonce aléatoire par réponse
- Hachage des scripts validés
- Blocage des URL javascript
- Refus d’eval() et Function()
« J’ai supprimé les scripts inline sur un back-office, et le nombre d’alertes XSS a chuté dès la première semaine. »
Marc L.
Ce verrouillage agit comme un pare-feu applicatif centré sur le navigateur, avec un effet immédiat sur les vecteurs les plus banals. Le passage vers les cadres, les formulaires et les rapports de violation élargit alors la défense à l’environnement complet de la page.
Configurer une politique CSP stricte sans fragiliser le site
Une politique stricte ne consiste pas à tout interdire aveuglément, mais à définir des exceptions justifiées. Selon MDN, les approches fondées sur nonce ou hash sont mieux adaptées qu’une simple liste blanche d’hôtes quand le site charge beaucoup de contenus tiers.
Dans la pratique, cette rigueur évite le piège classique du domaine de confiance trop large. Une équipe qui autorise plusieurs CDN, outils de mesure et widgets sociaux finit souvent par accepter davantage que prévu, ce qui affaiblit la restriction contenu tiers.
Éléments utiles :
- object-src pour bloquer les plugins
- base-uri pour limiter la base HTML
- frame-ancestors pour l’intégration externe
- form-action pour cibler les formulaires
Directive
Effet
Usage recommandé
Impact pratique
object-src ‘none’
Bloque object et embed
Sites modernes
Réduit les composants hérités
base-uri ‘none’
Interdit la base HTML
Pages sensibles
Évite les détournements d’URL
frame-ancestors ‘none’
Empêche l’intégration
Pages à protéger
Freine le clickjacking
form-action ‘self’
Limite les cibles de formulaires
Flux critiques
Réduit l’exfiltration
Selon MDN, frame-ancestors remplace utilement X-Frame-Options quand il faut un contrôle plus fin. Un responsable sécurité gagne alors en cohérence, parce que le même document gouverne plusieurs types de navigation et d’inclusion.
Nonce, hash et strict-dynamic dans les usages réels
Le nonce convient bien aux pages générées dynamiquement, alors que le hash s’impose mieux sur des contenus statiques. Selon MDN, strict-dynamic propage la confiance d’un script validé vers les scripts qu’il charge ensuite.
Ce choix change la façon de travailler des équipes produit et sécurité. Un site avec beaucoup de scripts internes peut supporter un nonce par réponse, tandis qu’un portail figé préfèrera des hachages stables, plus faciles à relire.
« Sur notre portail, le passage aux hachages a demandé du travail, mais les déploiements sont devenus plus prévisibles. »
Sophie R.
Points de décision :
- Nonce pour pages générées
- Hash pour contenus stables
- strict-dynamic pour scripts chaînés
- Integrity pour scripts externes
Quand un script approuvé charge lui-même d’autres ressources, la politique gagne en souplesse, mais perd en simplicité d’audit. Le dernier angle utile consiste donc à suivre les violations, puis à corriger sans attendre le prochain incident.
Rapports de violation et ajustements progressifs
Les rapports donnent à la sécurité une dimension opérationnelle, car ils montrent ce que le navigateur a réellement bloqué. Selon MDN, report-to doit être privilégié quand il est disponible, tandis que report-uri reste utile pour couvrir les navigateurs plus anciens.
Une équipe observait par exemple des blocages sur un ancien widget de support client, absent des environnements de test. Le rapport a révélé une source oubliée, puis la règle a été ajustée sans ouvrir de faille inutile.
À surveiller dans les rapports :
- Source bloquée précise
- Directive concernée
- Extrait de code signalé
- Fréquence des violations
« Les rapports CSP m’ont aidé à trouver un vieux script de suivi que personne ne référençait plus. »
Claire M.
Ce travail d’ajustement révèle la valeur concrète d’une politique vivante, capable de renforcer la navigation sécurisée sans ralentir le métier. La source officielle reste le meilleur point d’ancrage pour vérifier les directives, leurs valeurs et leurs cas limites.
Appliquer CSP dans les pages, les workers et les formulaires
Une politique solide ne s’arrête pas au document principal, car les workers et les formulaires suivent leurs propres règles de chargement. Selon MDN, un worker peut hériter de la CSP dans certains cas, mais il reçoit souvent sa propre politique via l’en-tête de réponse.
Cette nuance compte dans les applications riches, où un ServiceWorker ou un SharedWorker orchestre des requêtes en arrière-plan. Sans cette vigilance, une zone apparemment secondaire peut contourner la protection contre injection et créer un chemin discret pour l’exploitation.
Cas à couvrir :
- Document principal
- Workers dédiés et partagés
- Formulaires sensibles
- Intégrations dans des cadres
Contexte
Directive clé
Objectif
Effet attendu
Document HTML
default-src
Cadre global
Réduit les sources inattendues
Worker
worker-src
Charge contrôlée
Bloque les scripts non autorisés
Formulaire
form-action
Cible d’envoi
Empêche l’exfiltration
Cadre intégré
frame-ancestors
Inclusion maîtrisée
Réduit le clickjacking
Dans une refonte progressive, les équipes avancent souvent par périmètre, puis par ressource. Ce rythme évite les ruptures brutales, tout en consolidant une protection durable contre les vecteurs les plus courants.
Source : MDN Web Docs, « En-tête Content-Security-Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « Content Security Policy (CSP) – HTTP », MDN Web Docs, 2026 ; MDN Web Docs, « CSP Evaluation Guide », MDN Web Docs, 2026.