Command Center

Search for a vulnerability, tool, or protocol...

Defensive

Content Security Policy (CSP) — Durcissement Frontend

Déployer une CSP sans casser le site : directives clés, nonces/hashes, mode Report-Only, reporting, et pièges classiques (unsafe-inline).

14 mars 2026Peran2 min de lecture
#csp#web-security#xss#headers#browser-security#hardening

À quoi sert CSP ?

La Content Security Policy réduit l’impact des failles XSS et d’injections en limitant ce que le navigateur est autorisé à charger/exécuter.

  • Contrôle des scripts, styles, images, connexions, iframes…
  • Protection complémentaire (pas un substitut au correctif XSS).

Stratégie de déploiement (recommandée)

  1. Commencer en Report-Only pour mesurer la casse.
  2. Itérer : corriger le code et réduire progressivement les exceptions.
  3. Basculer en enforcement (Content-Security-Policy).
  4. Garder un reporting (télémetrie) pour repérer les régressions.

Directives importantes

default-src

Base line : sources par défaut.

script-src

  • Éviter unsafe-inline.
  • Préférer nonce (par réponse) ou hash (pour scripts inline stables).

object-src

Souvent none.

base-uri

Souvent self.

frame-ancestors

Empêche le clickjacking (remplace X-Frame-Options dans beaucoup de cas).

connect-src

Contrôle les connexions XHR/fetch/WebSocket (API, analytics, etc.).

Exemple de CSP (générique)

Exemple à adapter (domaines, analytics, CDNs). Le but est de montrer la structure, pas de fournir une politique universelle.

Content-Security-Policy:
  default-src 'self';
  base-uri 'self';
  object-src 'none';
  frame-ancestors 'none';
  img-src 'self' data:;
  font-src 'self';
  style-src 'self';
  script-src 'self' 'nonce-<RANDOM_NONCE>';
  connect-src 'self' https://api.example.com;
  upgrade-insecure-requests;

Nonces vs Hashes

  • Nonce : idéal quand vous générez des scripts inline (frameworks) ; nécessite d’injecter la nonce dans les balises <script>.
  • Hash : utile pour de petits scripts inline fixes ; casse si le contenu change.

Reporting

  • Utiliser Content-Security-Policy-Report-Only au début.
  • Définir un endpoint de rapport (selon support navigateur) pour collecter les violations.

Pièges fréquents

  • Ajouter unsafe-inline “temporairement” et ne jamais le retirer.
  • Oublier connect-src (les appels API se font bloquer).
  • Trop permissif (*, https:) : réduit fortement le gain.

Voir aussi