Aller au contenu principal

Générateur de hash SRI

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".

  • 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.

Ressource

Téléchargée par votre navigateur : le CDN doit autoriser CORS (jsDelivr, cdnjs, unpkg le font).

Intégrité

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

Comment fonctionne cet outil ?

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.

Comment utiliser cet outil ?

  1. Choisissez la source

    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.

  2. Réglez l’algorithme et le type

    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.

  3. Copiez le résultat

    Récupérez la valeur integrity seule, les attributs integrity et crossorigin="anonymous", ou la balise <script> ou <link rel="stylesheet"> complète.

Intégrité SRI

Intégrité SRI

integrity = algorithme + '-' + Base64(HASH(octets de la ressource))

Cas d'utilisation

Sécuriser une bibliothèque chargée depuis jsDelivr

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.

Mettre à jour le hash après une montée de version

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.

Répondre à une exigence PCI DSS sur les pages de paiement

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.

Exemples

Intégrité SHA-256 du texte abc

Entrée

Ressource : Contenu collé ; Contenu de la ressource : abc ; Algorithme : SHA-256

Résultat

Valeur integrity : sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=

Conseils et bonnes pratiques

  • Utilisez toujours une URL épinglée sur une version précise : une URL « latest » ou sans version change de contenu et casse l’empreinte à la publication suivante.
  • N’utilisez pas SRI pour des ressources générées dynamiquement, comme la feuille de style de Google Fonts, dont le contenu varie selon le navigateur : l’empreinte changerait d’un visiteur à l’autre.
  • Hachez exactement le fichier servi : une version minifiée, recompressée ou avec d’autres fins de ligne n’a pas la même empreinte que le fichier source.

Sources et références

Questions fréquentes

Qu’est-ce que Subresource Integrity (SRI) ?

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.

Faut-il choisir SHA-256, SHA-384 ou SHA-512 ?

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.

Pourquoi faut-il crossorigin="anonymous" ?

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.

Que se passe-t-il si le hash ne correspond pas ?

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.

Pourquoi le chargement depuis une URL échoue-t-il ?

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.

SRI remplace-t-il une Content-Security-Policy ?

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.

Outils similaires

Construisez une Content Security Policy directive par directive, avec header HTTP, balise meta et alertes.

Sécurité & confidentialitéUtiliser l’outil

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

Calculez en une fois les empreintes MD5, SHA-1, SHA-256, SHA-384 et SHA-512 d’un texte ou d’un fichier.

Sécurité & confidentialitéMis en avantUtiliser l’outil