Outils
Calculateur de hash CSP
Collez un script ou un style inline et obtenez son hash pour l'autoriser dans votre Content-Security-Policy.
Guide
Comprendre les hashs CSP
Ce générateur de hash CSP vous permet de conserver un script ou un style inline précis dans vos pages tout en appliquant une Content-Security-Policy stricte, sans recourir au mot-clé dangereux 'unsafe-inline'.
Qu'est-ce qu'un hash CSP ?
Un hash CSP est un condensé SHA encodé en base64 du contenu exact d'un élément script ou style inline. Vous l'ajoutez à votre politique pour que le navigateur n'exécute que ce fragment précis et bloque tout ce qu'il n'attend pas.
Comme la valeur est dérivée du code lui-même, une politique stricte peut autoriser le code inline auquel vous faites confiance tout en bloquant tout script qu'un attaquant parviendrait à injecter dans la page. Lisez l'explication complète dans le guide des hashs et nonces CSP.
Supprimer unsafe-inline sans casser vos scripts inline
Copiez la valeur générée, avec son préfixe sha256- et les guillemets, dans votre directive script-src pour les scripts ou style-src pour les styles. Vous pouvez lister plusieurs hashs dans la même directive.
Ne hashez que le contenu situé entre les balises, jamais les balises script ou style elles-mêmes. Le condensé doit correspondre au contenu inline octet par octet : un simple espace ou saut de ligne ajouté produit un hash différent et le navigateur le rejettera. Pour la syntaxe complète de la directive, consultez la directive script-src.
Content-Security-Policy:
script-src 'self' 'sha256-RFWPLDbv2BY+rCkDzsE+0fr8ylGr2R2faWMhq4lfEQc=';
# the same generated value, for an inline <style> block instead
Content-Security-Policy:
style-src 'self' 'sha256-RFWPLDbv2BY+rCkDzsE+0fr8ylGr2R2faWMhq4lfEQc=';Pourquoi votre hash CSP ne correspond pas
Presque toutes les non-correspondances viennent d'un octet modifié après le calcul du hash. Un moteur de template ou un minifieur a reformaté le script au build suivant ; un CDN a retiré ou ajouté des espaces dans la balise ; la valeur a été prise sur les balises plutôt que sur le contenu entre elles ; ou un éditeur a laissé un saut de ligne final que le navigateur ne perçoit pas comme vous.
Le raccourci consiste à laisser le navigateur vous le dire. Quand une politique bloque un script inline, le message de violation en console affiche la valeur sha256 calculée par le navigateur pour ce contenu exact : vous pouvez donc la copier directement depuis les DevTools au lieu de deviner quel octet a bougé.
Une règle qui piège souvent : un hash dans script-src ne couvre pas les attributs de gestionnaire d'événement inline comme onclick. Ceux-ci relèvent de script-src-attr et demandent 'unsafe-hashes', une construction plus faible qu'il vaut mieux éviter. Déplacez plutôt le gestionnaire dans le bloc script.
SHA-256, SHA-384 ou SHA-512 ?
Content-Security-Policy accepte trois algorithmes. SHA-256 est le plus utilisé et amplement suffisant pour tout site ; SHA-384 et SHA-512 produisent des valeurs plus longues sans avantage pratique pour la CSP. Choisissez un algorithme et utilisez-le de façon cohérente dans toute votre politique.
Hashs ou nonces ?
| Approche | Ce qu'il autorise | Cesse de fonctionner si le code change | Nécessite un serveur par requête |
|---|---|---|---|
'unsafe-inline' | Tout script inline de la page, y compris ceux qui sont injectés | Non | Non |
| Hash | Exactement l'extrait que vous avez haché, octet par octet | Oui, et c'est bien le but | Non |
| Nonce | Tout script portant l'attribut nonce de cette requête | Non | Oui, une valeur fraîche à chaque réponse |
Lorsque vous pouvez modifier la réponse à chaque requête, préférez un nonce : il est imprévisible, à usage unique et continue de fonctionner même quand le code inline change, ce qui en fait le choix par défaut le plus robuste. N'utilisez un hash que lorsqu'un nonce n'est pas praticable, pour des fragments inline statiques ou du code tiers que vous ne pouvez pas marquer à chaque réponse. Les politiques strictes s'appuient généralement d'abord sur un nonce avec strict-dynamic et recourent aux hashs uniquement là où un nonce ne peut pas aller. Les deux mécanismes sont détaillés dans le guide des hashs et nonces CSP.
script-src 'self' 'nonce-2726c7f26c' 'strict-dynamic';Plus d'outils gratuits
Poursuivez l'audit avec les autres outils gratuits
Chaque outil est gratuit, fonctionne sans compte et note avec la même échelle de sévérité.
Scanner CSP
Récupérez la Content-Security-Policy réellement servie par une URL et notez-la face aux contournements connus, aux sources joker et aux directives manquantes.
- Constats au niveau des directives
- Lien de résultats partageable
Évaluateur CSP
Collez une politique pas encore déployée et obtenez la même notation et les mêmes constats qu'un scan en ligne, sans URL.
- Auditez avant de déployer
- Même moteur de notation
Scanner d'en-têtes de sécurité
Notez chaque en-tête de sécurité envoyé par une URL, de HSTS à Permissions-Policy, avec chaque constat expliqué et priorisé.
- Tous les en-têtes, une seule note
- Correctifs classés par impact
Vérificateur Reporting API
Vérifiez que le signalement des violations fonctionne vraiment : les endpoints, Reporting-Endpoints et Report-To, et quelles fonctionnalités de sécurité rapportent réellement.
- Cartographie des endpoints et fonctionnalités
- Pertes silencieuses signalées
Générateur de hash SRI
Transformez l'URL d'un script ou d'un CSS servi par un CDN en hash Subresource Integrity, avec une balise prête à coller et une vérification CORS.
- SHA-256, 384 et 512
- CORS vérifié pour vous
Comparateur de sites
Situez votre score : votre site à côté de la moyenne du jeu de données et des sites les mieux configurés de l'année, contrôle par contrôle.
- Références publiées et vérifiables
- Vue radar par catégorie
FAQ
Questions fréquentes
Le calcul du hash, la correspondance et l'endroit où placer la valeur, expliqués.
Votre CSP casse quelque chose ?
CentralCSP collecte de vrais rapports Content-Security-Policy depuis les navigateurs de vos visiteurs, pour repérer une politique cassée ou un script bloqué avant que cela ne vous coûte cher. Ajoutez un en-tête, sans modification de code.
