Curious TechieDev Toolbox
Tous les Guides/Sécurité10 min read

Qu’est-ce que Content Security Policy (CSP) et comment contrer les attaques XSS ?

Maîtrisez CSP Level 3 : directives, nonces stricts, vérification par hachage et déploiement de headers défensifs.

Points Clés
  • Le CSP est un header HTTP limitant les sources autorisées à exécuter des scripts ou charger des contenus.
  • C’est le rempart fondamental contre les failles Cross-Site Scripting (XSS) et les exfiltrations de données.
  • CSP Level 3 préconise l’usage de nonces cryptographiques stricts et de condensats de hachage.
  • La directive frame-ancestors 'none' supplante X-Frame-Options contre le Clickjacking.
  • Testez sans risque en production via Content-Security-Policy-Report-Only.

1. Qu’est-ce que la Content Security Policy (CSP) ?

La Content Security Policy (CSP) est un en-tête de réponse HTTP certifié par le W3C permettant aux administrateurs de définir les sources autorisées à charger et exécuter du contenu.

En encadrant l’origine des scripts, feuilles de style et requêtes réseau, la CSP est l’outil le plus puissant contre les attaques Cross-Site Scripting (XSS).

2. Décomposition des Directives Clés

DIRECTIVECONTRÔLEVALEUR PAR DÉFAUT RECOMMANDÉE
default-srcRepli pour toutes les directives de chargement non définies'self'
script-srcSources permises pour l’exécution de JavaScript'self' 'nonce-...'
style-srcOrigines admises pour les feuilles de style'self' 'unsafe-inline'
connect-srcDestinations autorisées pour Fetch, XHR et WebSocket'self' https://api.domain.com
frame-ancestorsDomaines autorisés à intégrer la page dans une <iframe>'none'

3. Politiques Basées sur les Nonces vs Hashs

Les politiques anciennes basées sur les domaines autorisés étaient fragiles face aux redirections sur CDN. La sécurité moderne repose désormais sur des nonces uniques.

La norme Strict CSP (Niveau 3) impose des nonces cryptographiques générés à chaque requête :

Content-Security-Policy: script-src 'nonce-rAnd0m123' 'strict-dynamic'; object-src 'none';

4. Frame Ancestors vs X-Frame-Options

Bien que X-Frame-Options: DENY reste supporté, la directive frame-ancestors de CSP s’impose comme la norme moderne pour prévenir le détournement de clics (clickjacking).

5. Plan de Déploiement en 3 Étapes

Étape 1 : Mode Rapport Seul (Report-Only) : Activez <code>Content-Security-Policy-Report-Only</code> pour consigner les violations sans bloquer les fonctionnalités du site.
Étape 2 : Suppression du Code Inline : Remplacez les attributs inline <code>onclick="..."</code> par des écouteurs d’événements dans des scripts externes.
Étape 3 : Application Restrictive : Basculez sur l’en-tête <code>Content-Security-Policy</code> en ajoutant <code>object-src 'none'</code>.