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.
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.
Pour aller plus loin
- Subresource Integrity
- L'en-tête Integrity-Policy
- Surveiller les rapports Integrity-Policy
- Comment générer un hash Subresource Integrity
- Protéger les scripts CDN avec Subresource Integrity
- Corriger un constat Unsafe Implementation of Subresource Integrity
- Hash SRI ou hash CSP, la différence
- Générer les hash SRI automatiquement avec webpack et Vite
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 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
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
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.
