Subresource Integrity (SRI) permite declarar el hash criptográfico esperado de un script o una hoja de estilo externos. Si los bytes descargados no coinciden, el navegador no utiliza el recurso.
Subresource Integrity (SRI): verificar la integridad de recursos externos
Comprende cómo los hashes SRI detectan cambios inesperados en scripts y hojas de estilo externos y cuáles son sus límites.
Mostrar el índice
El hash corresponde a la versión exacta
SRI trabaja sobre los bytes reales. Cualquier modificación, incluso mínima, cambia el digest. Genera por tanto el valor a partir de la misma versión que se publicará, por ejemplo con el generador de hash SRI.
SHA-256, SHA-384 y SHA-512 son algoritmos admitidos por SRI. El resultado se coloca en el atributo integrity de un elemento <script> o <link>.
Los recursos cross-origin necesitan condiciones CORS compatibles
Cuando el recurso procede de otro origen, la respuesta debe permitir que el navegador realice la comprobación de integridad. El atributo crossorigin y las cabeceras CORS del servidor tienen que ser coherentes.
SRI encaja mejor con recursos estáticos versionados
Es especialmente útil cuando se fija una versión concreta de un script o CSS servido por CDN. En recursos que cambian con frecuencia o se generan de forma dinámica, mantener el hash resulta más difícil porque cada cambio exige regenerarlo.
Integridad no significa confianza
SRI confirma que los bytes recibidos coinciden con los esperados. No decide si el código aprobado era seguro desde el principio. Para entender mejor qué demuestra una huella criptográfica, consulta Hashes e integridad. Junto con una CSP, SRI puede formar parte de una estrategia más amplia de seguridad en el navegador.
¿Te ha resultado útil este artículo?
Fuentes y referencias
- W3C — Subresource Integrity (se abre en una pestaña nueva)Página en inglés
- MDN — Subresource Integrity (se abre en una pestaña nueva)Página en inglés