Una página tiene contenido mixto cuando su HTML inicial se carga a través de una conexión HTTPS segura, pero otros recursos (como imágenes, videos, hojas de estilo y secuencias de comandos) se cargan a través de una conexión HTTP insegura. El nombre hace referencia a la combinación de contenido HTTP y HTTPS en una sola página.
Solicitar subrecursos con el protocolo HTTP no seguro debilita la seguridad de la página, ya que estas solicitudes son vulnerables a los ataques en ruta, en los que un atacante escucha una conexión de red y ve o modifica la comunicación entre dos partes. Con estos recursos, los atacantes pueden hacer un seguimiento de los usuarios y reemplazar el contenido de un sitio web. En el caso del contenido mixto activo, pueden tomar el control total de la página, no solo de los recursos no seguros.
Si bien muchos navegadores muestran advertencias de contenido mixto al usuario, el informe suele llegar demasiado tarde: ya se realizaron las solicitudes no seguras y se comprometió la seguridad de la página.
Actualmente, la mayoría de los navegadores bloquean el contenido mixto por motivos de seguridad. Cambia las solicitudes de contenido no seguro a contenido seguro para garantizar que tu página siga cargándose correctamente.
Los dos tipos de contenido mixto
Existen dos tipos de contenido mixto: activo y pasivo.
El contenido mixto pasivo, incluidas las imágenes, el video y el audio, no interactúa con el resto de la página, por lo que un ataque de intermediario se limita en lo que puede hacer si intercepta o cambia ese contenido.
El contenido mixto activo interactúa con la página en su totalidad. Esto incluye secuencias de comandos, hojas de estilo, iframes y cualquier otro código que el navegador pueda descargar y ejecutar. Los ataques al contenido mixto activo permiten que un atacante haga casi cualquier cosa en la página.
Contenido mixto pasivo
El contenido mixto pasivo representa un riesgo menor que el contenido mixto activo, pero el riesgo sigue existiendo. Por ejemplo, un atacante puede hacer lo siguiente:
- Intercepta las solicitudes HTTP de imágenes en tu sitio y reemplaza esas imágenes.
- Reemplaza las imágenes de los botones para que los usuarios las confundan y, por ejemplo, borren el contenido que querían guardar.
- Reemplazar las imágenes de tu sitio por contenido pornográfico
- Reemplaza las imágenes de tus productos por anuncios de otros productos.
Incluso si el atacante no cambia el contenido de tu sitio, puede hacer un seguimiento de los usuarios a través de solicitudes de contenido mixto. También pueden saber qué páginas visita un usuario y qué productos ve en función de las imágenes o de otros recursos que carga el navegador.
Si hay contenido mixto pasivo, la mayoría de los navegadores indican en la barra de direcciones que la página no es segura, incluso cuando la página en sí se carga a través de HTTPS. Puedes observar este comportamiento en esta demostración.
Hasta hace poco, el contenido mixto pasivo se cargaba en todos los navegadores, ya que bloquearlo habría dañado muchos sitios web. Sin embargo, esto está comenzando a cambiar, por lo que es fundamental que actualices todas las instancias de contenido mixto en tu sitio.
En algunos casos, Chrome actualiza automáticamente el contenido mixto pasivo. Esto significa que, si un recurso se codificó de forma rígida como HTTP, pero está disponible a través de HTTPS, el navegador cargará la versión HTTPS. Si no hay una versión segura, el recurso no se cargará.
Cada vez que Chrome detecta contenido mixto o actualiza automáticamente el contenido mixto pasivo, registra mensajes detallados en la pestaña Problemas de Herramientas para desarrolladores para asesorarte sobre cómo solucionar tu problema específico.
Contenido mixto activo
El contenido mixto activo representa una mayor amenaza que el contenido mixto pasivo. Un atacante puede interceptar y reescribir contenido activo, y usarlo para tomar el control total de tu página o incluso de todo tu sitio web. Esto les permite cambiar cualquier aspecto de la página, como mostrar contenido diferente, robar contraseñas de usuarios o cualquier otra credencial de acceso, robar cookies de sesión de usuarios o redireccionar al usuario a un sitio completamente diferente.
Debido a que los riesgos del contenido mixto activo son muy altos, la mayoría de los navegadores ya bloquean este tipo de contenido de forma predeterminada para proteger a los usuarios, pero el comportamiento varía entre los proveedores y las versiones de los navegadores.
En esta demostración, se muestran ejemplos de contenido mixto activo. Carga el ejemplo a través de HTTP para ver el contenido que se bloquea cuando cargas el ejemplo a través de HTTPS. El contenido bloqueado también se detalla en la pestaña Problemas de Herramientas para desarrolladores.
La especificación de contenido mixto
Los navegadores siguen la especificación de contenido mixto, que define las categorías de contenido que se puede bloquear de forma opcional y contenido que se puede bloquear.
Un recurso se considera contenido bloqueable de forma opcional "cuando el riesgo de permitir su uso como contenido mixto se ve superado por el riesgo de romper partes significativas de la Web". Este es un subconjunto del contenido mixto pasivo.
Todo el contenido mixto que no sea bloqueable de forma opcional se considera bloqueable y el navegador debe bloquearlo.
En los últimos años, el uso de HTTPS aumentó de forma drástica y se convirtió en el valor predeterminado claro en la Web. Esto hace que ahora sea más factible que los navegadores consideren bloquear todo el contenido mixto, incluso los tipos de subrecursos definidos en la especificación de contenido mixto como bloqueables de forma opcional.
Navegadores más antiguos
Es posible que algunos visitantes usen navegadores más antiguos. Las diferentes versiones de navegadores de distintos proveedores tratan el contenido mixto de manera diferente. En el peor de los casos, los navegadores y las versiones más antiguos no bloquean ningún contenido mixto, lo que no es seguro para el usuario.
Si cargas todos tus recursos de forma segura y corriges los problemas de contenido mixto, te aseguras de que tu contenido sea visible y proteges a los usuarios del contenido peligroso que los navegadores más antiguos podrían no bloquear.