Aller au contenu principal

Générateur de CSP

Composez une Content Security Policy à partir de modèles (strict, analytics, permissif), ajustez chaque directive, activez Report-Only ou upgrade-insecure-requests et récupérez le header HTTP ou la balise meta, avec des alertes sur unsafe-inline, unsafe-eval et les jokers.

  • Presse-papiers

Intégrer ce widget

Personnalisez le rendu, vérifiez l’aperçu puis copiez le code.

Aperçu

Type de code d’intégration

Code à copier

Responsive et redimensionné automatiquement par Bethemesh.

Modèle

Génère un header de surveillance qui ne bloque pas les ressources.

Directives

Séparez les sources par des espaces ou des virgules.

Header HTTP

Balise meta

Politique brute

Cet outil vous a-t-il été utile ?

Comment fonctionne cet outil ?

Le générateur de CSP vous aide à écrire l’en-tête Content-Security-Policy qui indique au navigateur quelles sources de scripts, styles, images ou connexions votre site autorise. Il s’adresse aux développeurs, intégrateurs et administrateurs qui veulent réduire l’impact d’une faille XSS sans mémoriser la syntaxe des directives.

Une CSP (W3C Content Security Policy Level 3) est une liste de directives séparées par des points-virgules, chacune suivie de ses sources : `default-src 'self'; script-src 'self' https://www.googletagmanager.com; object-src 'none'; base-uri 'self'`. Les mots-clés comme `'self'`, `'none'`, `'unsafe-inline'` doivent être entre apostrophes, les hôtes et schémas (`https:`, `data:`) non. Les directives de récupération (script-src, img-src, connect-src…) héritent de default-src lorsqu’elles sont absentes, mais base-uri, form-action et frame-ancestors n’en héritent pas : c’est pourquoi l’outil signale leur absence.

L’outil assemble les valeurs saisies, supprime les doublons et les champs vides, puis produit trois sorties : la politique brute, l’en-tête `Content-Security-Policy` (ou `Content-Security-Policy-Report-Only` en mode surveillance) et une balise `<meta http-equiv>`. Il analyse ensuite la politique et avertit si default-src, object-src ou base-uri manquent, ou si `'unsafe-inline'`, `'unsafe-eval'` ou le joker `*` affaiblissent la protection. La directive upgrade-insecure-requests, sans valeur, demande au navigateur de charger en HTTPS les ressources référencées en HTTP.

Comment utiliser cet outil ?

  1. Choisissez un modèle

    Sélectionnez Strict, Avec analytics, Permissif ou Personnalisé, et activez si besoin le mode Report-Only pour obtenir un en-tête de surveillance non bloquant.

  2. Ajustez les directives

    Complétez les champs default-src, script-src, style-src, img-src, connect-src, frame-ancestors… en séparant les sources par des espaces ou des virgules, et activez upgrade-insecure-requests si nécessaire.

  3. Générez et copiez

    Cliquez sur « Générer la CSP », lisez les alertes affichées, puis copiez ou exportez l’en-tête HTTP, la balise meta ou la politique brute.

Cas d'utilisation

Poser une première CSP sur un site vitrine

Partez du modèle strict, ajoutez uniquement vos CDN et votre API dans script-src et connect-src, puis déployez d’abord en Report-Only pour repérer ce qui serait bloqué.

Autoriser Google Tag Manager et Analytics

Le modèle « Avec analytics » ajoute googletagmanager.com et google-analytics.com aux bonnes directives, à compléter selon les balises réellement chargées.

Corriger un rapport d’audit de sécurité

Un scanner signale « Content-Security-Policy manquant » ou « unsafe-inline autorisé » : reconstruisez la politique et vérifiez qu’aucune alerte ne subsiste avant de la remettre en production.

Exemples

Politique CSP minimale

Entrée

Directives : default-src = 'self' ; object-src = 'none' ; base-uri = 'self' ; Mode Report-Only : désactivé

Résultat

Header HTTP : Content-Security-Policy: default-src 'self'; object-src 'none'; base-uri 'self' ; aucun avertissement

Conseils et bonnes pratiques

  • Testez toujours la politique en Report-Only sur toutes les pages (formulaires, paiement, back-office) avant de la rendre bloquante : les violations apparaissent dans la console du navigateur.
  • La balise meta ignore frame-ancestors, report-uri et sandbox, et ne gère pas le mode Report-Only : pour ces cas, utilisez l’en-tête HTTP.
  • N’écrivez pas `self` sans apostrophes : sans elles, le navigateur le lit comme un nom d’hôte et la source ne correspond à rien.

Sources et références

Questions fréquentes

Une CSP empêche-t-elle les attaques XSS ?

Elle ne corrige pas la faille, mais elle limite fortement ce qu’un script injecté peut faire en bloquant les scripts inline et les domaines non autorisés. Une CSP qui contient 'unsafe-inline' dans script-src perd l’essentiel de cette protection. OWASP la présente comme une défense en profondeur, en complément de l’échappement des données.

Faut-il utiliser l’en-tête HTTP ou la balise meta ?

L’en-tête HTTP est préférable : il s’applique dès le début du chargement et prend en charge toutes les directives. La balise meta dépanne sur un hébergement statique sans accès aux en-têtes, mais elle ignore frame-ancestors, report-uri et sandbox, et ne protège que le contenu situé après elle.

Comment autoriser un script inline sans unsafe-inline ?

Ajoutez à script-src un nonce (`'nonce-valeurAléatoire'` régénéré à chaque réponse et repris dans l’attribut nonce de la balise) ou le hash du script (`'sha256-…'`, Base64 du SHA-256 du contenu exact). Vous pouvez saisir ces valeurs directement dans le champ script-src ; le hash se calcule avec un générateur SRI ou de hash.

'self' autorise-t-il les sous-domaines ?

Non. 'self' correspond uniquement à la même origine : même schéma, même hôte et même port. Pour autoriser cdn.example.com ou tous les sous-domaines, ajoutez explicitement `https://cdn.example.com` ou `https://*.example.com`.

Comment fonctionne le mode Report-Only ?

L’en-tête Content-Security-Policy-Report-Only applique la même politique sans rien bloquer : le navigateur se contente de signaler les violations dans la console et, si vous ajoutez une directive report-to ou report-uri, de les envoyer à votre point de collecte. Il permet d’ajuster la politique avant de basculer vers l’en-tête bloquant.

frame-ancestors remplace-t-il X-Frame-Options ?

Oui, frame-ancestors est le remplaçant moderne de X-Frame-Options et il est prioritaire dans les navigateurs qui le prennent en charge : `frame-ancestors 'none'` équivaut à DENY. Beaucoup de sites conservent les deux pour les anciens clients. Il ne fonctionne qu’en en-tête HTTP, pas dans une balise meta.

Outils associés

Des outils similaires ou complémentaires à celui-ci.

Outils similaires

Générez HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP et X-Frame-Options pour Nginx ou Apache.

Sécurité & confidentialitéUtiliser l’outil

Générez l’attribut integrity SRI d’un script ou d’une feuille de style, depuis un contenu, un fichier ou une URL de CDN.

Sécurité & confidentialitéUtiliser l’outil

Analysez des en-têtes HTTP pour vérifier la sécurité, le cache, CORS et les cookies d’une réponse.

Sécurité & confidentialitéUtiliser l’outil