Nouveau : CentralCSP v2 est disponible, avec la prise en charge complète de la Reporting API. Lire le changelog

Outils

Calculateur de hash SRI

Collez l'URL d'un script ou d'une feuille de style servie par un CDN et obtenez son hash Subresource Integrity, pour épingler le fichier exact dans votre HTML.

Découvrez comment fonctionne le SRI
Besoin d'un hash pour votre propre script ou style inline ?Utiliser le calculateur de hash CSP

Guide

Comprendre le Subresource Integrity

Le Subresource Integrity (SRI) est l'attribut integrity que vous ajoutez à un script ou une feuille de style chargés depuis un autre hôte, pour que le navigateur rejette le fichier si un CDN sert un jour du code altéré.

Qu'est-ce qu'un hash Subresource Integrity (SRI) ?

Un hash SRI est un condensé SHA encodé en base64 des octets exacts d'un fichier. Vous le placez dans l'attribut integrity d'une balise script ou link ; le navigateur hache ce qu'il télécharge, compare, et refuse la ressource à la moindre différence, la traitant comme une erreur réseau.

Il protège contre une menace précise : un hôte tiers ou un CDN qui vous sert du code altéré ou compromis. Comme la valeur est liée au fichier exact, un attaquant qui remplace la ressource ne peut pas la faire exécuter par le navigateur. Lisez l'explication complète dans le guide Subresource Integrity.

<script
  src="https://cdn.example.com/app.min.js"
  integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
  crossorigin="anonymous"></script>

Quelles ressources peuvent porter une empreinte SRI ?

Deux seulement : une balise script, et une balise link dont le rel vaut stylesheet, preload ou modulepreload. Sur une image, une iframe, une vidéo ou une police, l'attribut est ignoré, sans le moindre avertissement.

Il vaut la peine de l'ajouter partout où le fichier est censé rester exactement tel qu'il est aujourd'hui :

  • Une bibliothèque épinglée à une version sur un CDN public
  • Une feuille de style ou une police d'icônes servie par un autre hôte
  • Le bundle d'un widget ou d'un SDK à une URL qui ne change jamais
  • Votre propre sortie de build, quand le bundler écrit les empreintes pour vous

Ajoutez l'attribut crossorigin

Pour un fichier sur une autre origine, ajoutez crossorigin="anonymous" à côté de integrity. Un navigateur ne vérifie une ressource cross-origin que si l'hôte autorise la lecture via CORS, un en-tête Access-Control-Allow-Origin. Sans lui, le navigateur ne peut pas vérifier le fichier et ignore l'attribut integrity, c'est pourquoi cet outil vous avertit lorsqu'une URL n'est pas lisible via CORS.

La paire d'attributs est la même sur les deux balises :

Sur un script

<script
  src="https://cdn.example.com/chart.min.js"
  integrity="sha384-Cbq7oAJVQfWCcGpuf3EmLpr4wqzBQKux9Hy8drVeoJXPFrWvNQ1kPzQho2wxJwY8"
  crossorigin="anonymous"></script>

Sur une feuille de style

<link
  rel="stylesheet"
  href="https://cdn.example.com/theme.css"
  integrity="sha384-VuArbKap7CY5uykM6oqf+R9GqQ8Kux9rx7HNQlGYl1kPzQho1wx4JwY8wCdgcRRap"
  crossorigin="anonymous">

Là où SRI cesse de fonctionner

Une empreinte couvre un fichier à une URL : elle s'arrête au premier élément qui bouge.

  • Les scripts qui se mettent à jour à une URL fixe. Un tag manager, un loader d'analytics ou un SDK de paiement publie de nouveaux octets quand le fournisseur le décide, et une empreinte épinglée bloque la page à la version suivante. Stripe.js en est le cas le plus net : il doit être chargé depuis js.stripe.com et n'accepte aucune empreinte.
  • Les scripts injectés par un autre script. L'empreinte posée sur un loader couvre le loader, pas les balises qu'il ajoute ensuite : c'est ce qui rend les tag managers difficiles à épingler en pratique.
  • Les fichiers qu'un hôte cross-origin refuse de servir avec CORS. Sans en-tête Access-Control-Allow-Origin, le navigateur ne peut pas lire le fichier pour le vérifier : il ignore l'attribut.
  • Les scripts inline et les feuilles de style tirées par un @import CSS. Utilisez une empreinte CSP pour les premiers, et épinglez la feuille de style importatrice pour les secondes.

Imposer le SRI sur tout votre site

SRI fonctionne par adhésion : vous ajoutez une empreinte balise par balise. L'ancienne directive require-sri-for de CSP l'aurait imposé à tout le site, mais elle n'a jamais atteint un navigateur stable et elle est abandonnée.

Pour imposer l'intégrité sur tout votre site aujourd'hui, utilisez l'en-tête Integrity-Policy : le navigateur bloque, ou signale, tout script chargé sans SRI valide, transformant une option par balise en une politique applicable. Les deux sont détaillés dans le guide Integrity-Policy.

Integrity-Policy: blocked-destinations=(script)

SHA-256, SHA-384 ou SHA-512 ?

Le SRI accepte les mêmes trois algorithmes que la CSP. SHA-384 est le choix le plus courant pour le SRI, mais les trois sont aussi sûrs ici, alors choisissez-en un et appliquez-le systématiquement. Vous pouvez même lister plusieurs hashs sur une balise : le navigateur accepte le fichier si l'algorithme le plus fort qu'il comprend correspond.

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
Lancer le scanner CSP

É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
Évaluer une politique dans l'évaluateur CSP

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
Scanner vos en-têtes de sécurité

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
Vérifier votre configuration Reporting API

Générateur de hash CSP

Transformez un script ou un style inline en hash qui l'autorise sous une politique stricte, directement dans votre navigateur.

  • Fonctionne entièrement côté client
  • SHA-256, 384 et 512
Générer un hash CSP

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
Comparez votre site aux meilleurs

FAQ

Questions fréquentes

Intégrité, CORS, algorithmes et rotation, expliqués.

Suivez l'intégrité sur chaque page

Un hash SRI verrouille un fichier, CentralCSP les surveille tous. Déployez une Integrity-Policy en report-only et repérez un script tiers altéré dès qu'il change, dans les navigateurs de vos vrais visiteurs.