Generador de hash SRI
Genera hashes de Subresource Integrity para tus archivos JavaScript y CSS. Pega el código, suelta archivos o carga una URL de CDN, elige sha256, sha384 o sha512 y copia una etiqueta <script> o <link> completa con los atributos integrity y crossorigin. También puedes verificar un valor integrity existente.
Última actualización:
Tu navegador descarga el archivo directamente desde ese servidor. La mayoría de las CDN (jsDelivr, unpkg, cdnjs) envían la cabecera CORS necesaria tanto para esta herramienta como para SRI.
Verificar un valor integrity
Cómo usar Generador de hash SRI
- Elige la entrada: pega el código del archivo, sube archivos o escribe la URL de CDN del script o la hoja de estilos.
- Elige el algoritmo de hash. sha384 es el valor habitual; puedes añadir varios.
- Haz clic en Generar hash SRI para calcular el valor integrity.
- Copia la etiqueta o solo el valor integrity y pégalo en tu HTML.
- Verifica más tarde: pega un valor integrity existente en el cuadro Verificar para confirmar que un archivo sigue coincidiendo.
Cómo añadir SRI a un script o una hoja de estilos
Añade dos atributos a la etiqueta: integrity con uno o más hashes, y crossorigin para que el navegador obtenga el archivo con CORS y pueda comprobarlo.
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/library.min.js" integrity="sha384-..." crossorigin="anonymous"></script> <link rel="stylesheet" href="https://cdn.example.com/[email protected]/main.css" integrity="sha384-..." crossorigin="anonymous">
Cuando el resumen del archivo descargado no coincide, el navegador lo bloquea y registra en la consola un error como "Failed to find a valid digest in the 'integrity' attribute".
Formato del valor integrity
| Algoritmo | Tamaño del resumen | Longitud en Base64 | Prefijo de ejemplo |
|---|---|---|---|
| SHA-256 | 256 bits (32 bytes) | 44 caracteres | sha256- |
| SHA-384 | 384 bits (48 bytes) | 64 caracteres | sha384- |
| SHA-512 | 512 bits (64 bytes) | 88 caracteres | sha512- |
El resumen se codifica en Base64 estándar (con +, / y relleno =), no en hex. Varios valores se separan con espacios. Lo mismo desde la línea de comandos: openssl dgst -sha384 -binary file.js | openssl base64 -A.
Consejos sobre SRI
- Usa SRI solo con archivos inmutables y con versión. Fija la versión exacta en la URL (
@3.10.1), nunca "latest". - Vuelve a generar el hash cada vez que actualices el archivo. Un paso de compilación puede hacerlo automáticamente.
- Combina SRI con una Content Security Policy: CSP limita de dónde pueden venir los scripts y SRI garantiza lo que contienen.
- Ten un plan alternativo: si una CDN cambia un archivo, SRI lo bloquea, así que prueba las páginas tras actualizar cualquier dependencia.
Preguntas frecuentes
¿Qué es Subresource Integrity (SRI)?
Subresource Integrity es un estándar del W3C que permite al navegador comprobar que un script o una hoja de estilos que descarga no ha sido modificado. Añades integrity="sha384-..." a la etiqueta script o link; si el hash del archivo descargado no coincide, el navegador se niega a ejecutarlo o aplicarlo. Protege tu sitio si una CDN o un host de terceros se ve comprometido.
¿Qué algoritmo de hash debo usar?
Los navegadores admiten sha256, sha384 y sha512. sha384 es la opción más común y la que publican la mayoría de las CDN. Si indicas varios hashes, el navegador usa el algoritmo más fuerte presente y el archivo debe coincidir con uno de los hashes de ese algoritmo.
¿Por qué necesito crossorigin="anonymous"?
Para archivos cargados desde otro origen, el navegador solo puede comprobar la integridad cuando la respuesta se obtiene con CORS. crossorigin="anonymous" solicita el archivo sin cookies, y el servidor debe responder con una cabecera Access-Control-Allow-Origin. Sin ello, un recurso de otro origen con atributo integrity se bloquea.
¿Por qué mi hash no coincide con el de la CDN?
SRI calcula el hash de los bytes exactos del archivo. Un solo byte cambiado, un final de línea distinto (CRLF frente a LF), la falta de un salto de línea final o una versión minificada frente a una sin minificar dan un hash completamente distinto. El texto pegado usa finales de línea LF, así que para una coincidencia exacta sube el archivo o cárgalo por URL.
¿Puedo usar SRI con archivos que cambian, como el CSS de Google Fonts o scripts de analítica?
No. SRI solo funciona con archivos cuyo contenido nunca cambia, como archivos de bibliotecas con versión ([email protected]). Los recursos que varían según el navegador o se actualizan en el mismo lugar, como el CSS de Google Fonts o los scripts de gestores de etiquetas, no pasarán la comprobación y se bloquearán.
¿Cómo se calcula el valor integrity?
El navegador calcula el resumen SHA de los bytes del archivo, codifica el resumen binario en Base64 estándar (no hex) y le antepone el nombre del algoritmo y un guion; por ejemplo, el script de una línea alert('Hello, world.'); tiene el valor integrity sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.