Ir al contenido principal
Bethemesh

Generador de hash SRI

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

  • Portapapeles

Integrar este widget

Personaliza el aspecto, comprueba la vista previa y copia el código.

Vista previa

Tipo de código de integración

Código para copiar

Se adapta a tu página y Bethemesh ajusta su tamaño automáticamente.

Recurso

Lo descarga tu navegador: el CDN debe permitir CORS (jsDelivr, cdnjs y unpkg lo hacen).

Integridad

¿Te ha resultado útil esta herramienta?

¿Cómo funciona esta herramienta?

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.

Cómo utilizar esta herramienta

  1. Elige el origen

    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.

  2. Ajusta el algoritmo y el tipo

    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.

  3. Copia el resultado

    Obtén solo el valor integrity, los atributos integrity y crossorigin="anonymous" o la etiqueta <script> o <link rel="stylesheet"> completa.

Integridad SRI

Integridad SRI

integrity = algoritmo + '-' + Base64(HASH(bytes del recurso))

Casos de uso

Proteger una biblioteca cargada desde jsDelivr

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.

Actualizar el hash tras un cambio de versión

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.

Cumplir un requisito de PCI DSS en páginas de pago

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.

Ejemplos

Integridad SHA-256 del texto abc

Entrada

Recurso: Contenido pegado; Contenido del recurso: abc; Algoritmo: SHA-256

Resultado

Valor integrity: sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=

Consejos y buenas prácticas

  • Usa siempre una URL fijada a una versión concreta: una URL «latest» o sin versión cambia de contenido y rompe el hash con la siguiente publicación.
  • No uses SRI con recursos generados dinámicamente, como la hoja de estilos de Google Fonts, cuyo contenido varía según el navegador: el hash cambiaría de un visitante a otro.
  • Calcula el hash exactamente del archivo que se sirve: una versión minificada, recomprimida o con otros finales de línea no tiene el mismo hash que el archivo fuente.

Fuentes y referencias

Preguntas frecuentes

¿Qué es Subresource Integrity (SRI)?

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.

¿Debo elegir SHA-256, SHA-384 o SHA-512?

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.

¿Por qué hace falta crossorigin="anonymous"?

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.

¿Qué pasa si el hash no coincide?

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.

¿Por qué falla la carga desde una URL?

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.

¿SRI sustituye a una Content Security Policy?

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.

Herramientas similares

Crea una Content Security Policy directiva a directiva, con cabecera HTTP, etiqueta meta y avisos.

Seguridad y privacidadUsar esta herramienta

Genera HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP y X-Frame-Options para Nginx o Apache.

Seguridad y privacidadUsar esta herramienta

Calcula de una vez los hash MD5, SHA-1, SHA-256, SHA-384 y SHA-512 de un texto o archivo.

Seguridad y privacidadDestacadaUsar esta herramienta