Intégrité SRI
integrity = algorithme + '-' + Base64(HASH(octets de la ressource))
Calculez la valeur integrity Subresource Integrity en SHA-256, SHA-384 ou SHA-512 à partir d’un contenu collé, d’un fichier local ou d’une URL de CDN, puis copiez la balise <script> ou <link> prête à l’emploi avec crossorigin="anonymous".
Téléchargée par votre navigateur : le CDN doit autoriser CORS (jsDelivr, cdnjs, unpkg le font).
Ce générateur calcule la valeur integrity Subresource Integrity (SRI) d’un script ou d’une feuille de style et produit la balise HTML correspondante. Il s’adresse aux développeurs qui chargent des bibliothèques depuis un CDN et veulent que le navigateur bloque tout fichier modifié.
Subresource Integrity (spécification W3C) permet d’ajouter à une balise <script> ou <link rel="stylesheet"> un attribut integrity contenant l’empreinte attendue de la ressource. La valeur se compose du nom de l’algorithme, d’un tiret et du hash binaire encodé en Base64 : un fichier contenant exactement console.log("hello"); donne sha384-ym/3cF/gAcW1/eerNQGFaOSOuU2LHI6RYvChaVur/G+PkVozZ5Zo8Uu5R2S2zm7C. Au chargement, le navigateur recalcule l’empreinte des octets reçus et refuse d’exécuter le script ou d’appliquer la feuille de style si elle ne correspond pas. Seuls SHA-256, SHA-384 et SHA-512 sont admis ; SHA-384 est la valeur par défaut, celle des exemples de la spécification et de MDN.
Pour une ressource d’une autre origine, le navigateur doit pouvoir lire la réponse pour en calculer le hash, ce qui exige une requête CORS : l’attribut crossorigin="anonymous" côté page et un en-tête Access-Control-Allow-Origin côté CDN. L’outil ajoute donc crossorigin="anonymous" aux attributs et à la balise générée. En mode URL, le fichier est téléchargé directement par votre navigateur, sans serveur intermédiaire ; cela fonctionne avec les CDN qui autorisent CORS comme jsDelivr, cdnjs ou unpkg. Le calcul équivalent en ligne de commande est openssl dgst -sha384 -binary fichier.js | openssl base64 -A.
Collez le contenu du fichier, sélectionnez un fichier local ou saisissez l’URL d’un CDN : dans ce dernier cas, votre navigateur télécharge le fichier directement.
Gardez SHA-384 par défaut ou choisissez SHA-256 ou SHA-512, puis indiquez s’il s’agit d’un script ou d’une feuille de style.
Récupérez la valeur integrity seule, les attributs integrity et crossorigin="anonymous", ou la balise <script> ou <link rel="stylesheet"> complète.
integrity = algorithme + '-' + Base64(HASH(octets de la ressource))
Saisissez l’URL versionnée, par exemple https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css, pour obtenir la balise <link> avec integrity. Si le CDN est compromis et sert un autre fichier, le navigateur le bloque.
Chaque nouvelle version d’un fichier change son empreinte. Recalculez l’attribut integrity dès que vous modifiez l’URL versionnée, sinon la ressource sera bloquée en production.
PCI DSS 4.0 (exigence 6.4.3) impose de garantir l’intégrité de chaque script chargé sur une page de paiement. SRI est l’un des moyens couramment utilisés pour les scripts tiers au contenu stable : générez la valeur integrity de chacun.
Entrée
Ressource : Contenu collé ; Contenu de la ressource : abc ; Algorithme : SHA-256Résultat
Valeur integrity : sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=C’est une fonction de sécurité des navigateurs, normalisée par le W3C, qui vérifie qu’un fichier chargé depuis un tiers n’a pas été modifié. Vous indiquez l’empreinte attendue dans l’attribut integrity ; si le fichier reçu ne correspond pas, il n’est ni exécuté ni appliqué. Cela protège contre un CDN compromis ou un fichier altéré en chemin.
Les trois sont acceptés et sûrs. SHA-384 est le choix le plus courant et la valeur par défaut de l’outil ; SHA-512 convient aussi et SHA-256 reste valide. Vous pouvez indiquer plusieurs valeurs séparées par un espace dans integrity : le navigateur retient alors l’algorithme le plus fort.
Pour une ressource d’une autre origine, le navigateur ne peut lire son contenu, et donc vérifier son hash, que par une requête CORS. Sans l’attribut crossorigin, la réponse est opaque et la ressource est bloquée. La valeur anonymous indique de n’envoyer ni cookies ni identifiants avec la requête.
Le navigateur refuse la ressource et affiche dans la console une erreur du type « Failed to find a valid digest in the 'integrity' attribute ». Le script ne s’exécute pas ou la feuille de style ne s’applique pas, ce qui peut casser la page. Vérifiez que l’URL est versionnée et régénérez le hash à partir du fichier réellement servi.
Le fichier est téléchargé par votre navigateur, qui applique les règles CORS : si le serveur n’envoie pas d’en-tête Access-Control-Allow-Origin, la lecture est refusée. Dans ce cas, SRI ne fonctionnerait pas non plus pour ce fichier chargé depuis un autre domaine. Téléchargez-le et utilisez le mode fichier, ou choisissez un CDN compatible CORS comme jsDelivr, cdnjs ou unpkg.
Non, les deux se complètent. SRI garantit qu’un fichier précis n’a pas changé, tandis qu’une CSP limite les origines autorisées à fournir des scripts et bloque les scripts injectés. Pour un site qui dépend de CDN, combinez une CSP restrictive avec SRI sur chaque ressource tierce.
Outils associés
Des outils similaires ou complémentaires à celui-ci.
Construisez une Content Security Policy directive par directive, avec header HTTP, balise meta et alertes.
Générez HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP et X-Frame-Options pour Nginx ou Apache.
Calculez en une fois les empreintes MD5, SHA-1, SHA-256, SHA-384 et SHA-512 d’un texte ou d’un fichier.
Comprenez comment SRI utilise une empreinte cryptographique pour vérifier qu’un script ou une feuille de style externe correspond au fichier attendu.
Comprenez les différentes couches de sécurité d’un site Web : HTTPS, en-têtes HTTP, CSP, SRI, authentification, mots de passe et intégrité.
Distinguez hash, chiffrement et signature, puis utilisez les empreintes pour vérifier une égalité ou l’intégrité de données sans leur attribuer de fausses garanties.
Comprenez comment OAuth 2.0, PKCE, JWT, JWK et JWKS s’articulent sans les confondre : autorisation, jetons, clés publiques et vérification.