Integridad SRI
integrity = algoritmo + '-' + Base64(HASH(bytes del recurso))
Calcula el valor integrity de Subresource Integrity en SHA-256, SHA-384 o SHA-512 a partir de un contenido pegado, un archivo local o una URL de CDN, y copia la etiqueta <script> o <link> lista para usar con crossorigin="anonymous".
Lo descarga tu navegador: el CDN debe permitir CORS (jsDelivr, cdnjs y unpkg lo hacen).
Este generador calcula el valor integrity de Subresource Integrity (SRI) de un script o una hoja de estilos y produce la etiqueta HTML correspondiente. Está pensado para desarrolladores que cargan bibliotecas desde un CDN y quieren que el navegador bloquee cualquier archivo modificado.
Subresource Integrity (especificación del W3C) permite añadir a una etiqueta <script> o <link rel="stylesheet"> un atributo integrity con el hash esperado del recurso. El valor se compone del nombre del algoritmo, un guion y el hash binario codificado en Base64: un archivo que contiene exactamente console.log("hello"); da sha384-ym/3cF/gAcW1/eerNQGFaOSOuU2LHI6RYvChaVur/G+PkVozZ5Zo8Uu5R2S2zm7C. Al cargarlo, el navegador recalcula el hash de los bytes recibidos y se niega a ejecutar el script o aplicar la hoja de estilos si no coincide. Solo se admiten SHA-256, SHA-384 y SHA-512; SHA-384 es el valor por defecto, como en los ejemplos de la especificación y de MDN.
Para un recurso de otro origen, el navegador debe poder leer la respuesta para calcular su hash, lo que exige una petición CORS: el atributo crossorigin="anonymous" en la página y una cabecera Access-Control-Allow-Origin enviada por el CDN. Por eso la herramienta añade crossorigin="anonymous" a los atributos y a la etiqueta generada. En el modo URL, tu navegador descarga el archivo directamente, sin servidor intermedio; funciona con los CDN que permiten CORS, como jsDelivr, cdnjs o unpkg. El cálculo equivalente en la línea de comandos es openssl dgst -sha384 -binary archivo.js | openssl base64 -A.
Pega el contenido del archivo, selecciona un archivo local o introduce la URL de un CDN: en este caso, tu navegador descarga el archivo directamente.
Mantén SHA-384 por defecto o elige SHA-256 o SHA-512 e indica si se trata de un script o de una hoja de estilos.
Obtén solo el valor integrity, los atributos integrity y crossorigin="anonymous" o la etiqueta <script> o <link rel="stylesheet"> completa.
integrity = algoritmo + '-' + Base64(HASH(bytes del recurso))
Introduce la URL con versión, por ejemplo https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css, para obtener la etiqueta <link> con integrity. Si el CDN se ve comprometido y sirve otro archivo, el navegador lo bloquea.
Cada nueva versión de un archivo cambia su hash. Vuelve a calcular el atributo integrity en cuanto cambies la URL con versión; si no, el recurso quedará bloqueado en producción.
PCI DSS 4.0 (requisito 6.4.3) exige garantizar la integridad de cada script cargado en una página de pago. SRI es uno de los medios habituales para scripts de terceros con contenido estable: genera el valor integrity de cada uno.
Entrada
Recurso: Contenido pegado; Contenido del recurso: abc; Algoritmo: SHA-256Resultado
Valor integrity: sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=Es una función de seguridad de los navegadores, normalizada por el W3C, que comprueba que un archivo cargado desde un tercero no se ha modificado. Indicas el hash esperado en el atributo integrity; si el archivo recibido no coincide, no se ejecuta ni se aplica. Protege frente a un CDN comprometido o un archivo alterado por el camino.
Los tres se aceptan y son seguros. SHA-384 es la opción más habitual y el valor por defecto de la herramienta; SHA-512 también sirve y SHA-256 sigue siendo válido. Puedes indicar varios valores separados por un espacio en integrity: el navegador usa entonces el algoritmo más fuerte.
Para un recurso de otro origen, el navegador solo puede leer su contenido, y por tanto comprobar su hash, mediante una petición CORS. Sin el atributo crossorigin, la respuesta es opaca y el recurso se bloquea. El valor anonymous indica que no se envíen cookies ni credenciales con la petición.
El navegador rechaza el recurso y muestra en la consola un error como «Failed to find a valid digest in the 'integrity' attribute». El script no se ejecuta o la hoja de estilos no se aplica, lo que puede romper la página. Comprueba que la URL tenga versión y vuelve a generar el hash a partir del archivo que se sirve realmente.
Tu navegador descarga el archivo y aplica las reglas CORS: si el servidor no envía una cabecera Access-Control-Allow-Origin, se deniega la lectura. En ese caso, SRI tampoco funcionaría para ese archivo cargado desde otro dominio. Descárgalo y usa el modo archivo, o elige un CDN compatible con CORS como jsDelivr, cdnjs o unpkg.
No, ambas se complementan. SRI garantiza que un archivo concreto no ha cambiado, mientras que una CSP limita los orígenes que pueden servir scripts y bloquea los scripts inyectados. En un sitio que depende de CDN, combina una CSP estricta con SRI en cada recurso de terceros.
Herramientas relacionadas
Herramientas similares o complementarias a esta.
Crea una Content Security Policy directiva a directiva, con cabecera HTTP, etiqueta meta y avisos.
Genera HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP y X-Frame-Options para Nginx o Apache.
Calcula de una vez los hash MD5, SHA-1, SHA-256, SHA-384 y SHA-512 de un texto o archivo.
Comprende cómo los hashes SRI detectan cambios inesperados en scripts y hojas de estilo externos y cuáles son sus límites.
Comprende las capas que protegen un sitio web: HTTPS, cabeceras HTTP, CSP, SRI, autenticación, contraseñas e integridad.
Distingue hash, cifrado y codificación; comprende SHA-256, SHA-3, colisiones y los límites de una huella sin autenticación.
Aprende cuándo utilizar cifrado, hashing, HMAC o PBKDF2 para confidencialidad, integridad, autenticación y contraseñas.