Protegiendo sus Aplicaciones Web con la Integridad de Subrecursos (SRI) y Calculadoras de Hash SRI
In el desarrollo web moderno, rara vez construimos todo desde cero. Dependemos de las Redes de Entrega de Contenidos (CDN) para alojar nuestras librerías favoritas como React, Vue o Bootstrap. Sin embargo, esta dependencia introduce un riesgo: ¿qué pasa si la CDN se ve comprometida y el script que está cargando es reemplazado por código malicioso?
Aquí es donde entra la Integridad de Subrecursos (SRI). Esta guía explica cómo funciona SRI y cómo usar una calculadora de hash SRI para mantener a sus usuarios seguros.
1. ¿Qué es la Integridad de Subrecursos (SRI)?
La Integridad de Subrecursos (SRI) es una característica de seguridad que permite a los navegadores verificar que los recursos que obtienen (por ejemplo, de una CDN) se entreguen sin manipulaciones inesperadas.
Cómo funciona
Cuando incluye un recurso en su HTML, proporciona un hash criptográfico de ese recurso en el atributo integrity. El navegador entonces:
- Obtiene el recurso.
- Calcula el hash del recurso obtenido.
- Lo compara con el hash que usted proporcionó.
- Si coinciden, el recurso se ejecuta. Si no coinciden, el navegador bloquea el recurso.
La Sintaxis HTML
<script src="https://example.com/example-framework.js"
integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcOtpguf4Dez6GdrJCT9Wo+SWax9fEE99l"
crossorigin="anonymous"></script>
2. Uso de una Calculadora de Hash SRI
Para implementar SRI, necesita el hash criptográfico correcto del archivo que está cargando. Una calculadora de hash SRI automatiza este proceso.
Algoritmos de Hash Comunes para SRI
- SHA-256: Seguro pero con hashes ligeramente más cortos.
- SHA-384: El algoritmo más recomendado para SRI (equilibrando seguridad y longitud).
- SHA-512: El más seguro, lo que resulta en hashes más largos.
Pasos para Generar un Hash SRI
- Proporcionar el Archivo: Suba la versión local del script o proporcione la URL del activo de la CDN.
- Seleccionar Algoritmo: Elija entre SHA-256, SHA-384 o SHA-512.
- Generar: La herramienta producirá una cadena que comienza con el nombre del algoritmo (por ejemplo,
sha384-...). - Copiar y Pegar: Inserte la cadena resultante en el atributo
integrityde su etiqueta script o link.
3. Por qué SRI es Crítico para la Seguridad Web Moderna
Defensa contra el Compromiso de la CDN
Incluso si una CDN masiva es hackeada, SRI asegura que su sitio permanezca seguro. El código malicioso no coincidirá con su hash y el navegador simplemente se negará a ejecutarlo.
Cumplimiento y Confianza
El uso de SRI es una mejor práctica recomendada por organizaciones de seguridad como OWASP. Demuestra a sus usuarios y clientes que se toma en serio la seguridad de sus datos.
Prevención de Ataques de "Hombre en el Medio" (MITM)
SRI protege a los usuarios en redes comprometidas (como redes Wi-Fi públicas) de atacantes que podrían intentar inyectar código malicioso en el tráfico.
4. Solución de Problemas en Fallos de SRI
Si su recurso no carga, es posible que vea un error en la consola como:
None of the "integrity" hashes in the "integrity" attribute match the content of the subresource. (Ninguno de los hashes de integridad en el atributo "integrity" coincide con el contenido del subrecurso).
Causas Comunes:
- Hash Incorrecto: Usó la versión incorrecta del archivo al generar el hash.
- Falta el Atributo
crossorigin: Para que SRI funcione en solicitudes de origen cruzado (cross-origin), el atributocrossorigin="anonymous"es obligatorio. - Compresión de la CDN: Algunas CDN podrían modificar el contenido del archivo (como la minificación o compresión sobre la marcha), lo que cambia el hash. Asegúrese de estar calculando el hash de exactamente lo que recibe el navegador.
Resumen de Mejores Prácticas de SRI
| Acción | ¿Por qué? |
|---|---|
| Usar SHA-384 | Equilibrio estándar de la industria entre velocidad y seguridad. |
Siempre añadir crossorigin |
Requerido para la validación de SRI entre sitios. |
| Auditar Scripts de Terceros | Solo use SRI para scripts en los que confíe de fuentes reputadas. |
| Automatizar la Generación de Hashes | Use una calculadora de SRI para evitar errores de escritura manual. |
Conclusión
La Integridad de Subrecursos es una forma poderosa y de bajo costo para aumentar drásticamente la seguridad de su aplicación web. Al usar una calculadora de hash SRI como parte de su proceso de despliegue, puede proteger su sitio y a sus usuarios de uno de los vectores de ataque más comunes en la web moderna.
FAQ: Preguntas Frecuentes
P: ¿Puedo usar SRI para mis propios scripts internos?
R: Sí, aunque es menos crítico que para scripts de terceros. Aún puede servir como una verificación de integridad útil durante su proceso de construcción.
P: ¿Qué sucede si una CDN actualiza la versión del script?
R: Si el contenido del archivo cambia (incluso un solo carácter), el hash cambiará. Debe actualizar el atributo integrity cada vez que actualice la versión del script.
P: ¿SRI ralentiza la carga de la página?
R: El impacto en el rendimiento es insignificante. Los navegadores modernos calculan el hash muy rápidamente mientras ya están procesando el script.