Una página tiene contenido mixto cuando su HTML inicial se carga en una conexión HTTPS segura, pero otros recursos (como imágenes, videos, hojas de estilo y secuencias de comandos) se cargan en una conexión HTTP no segura. El nombre se refiere a la combinación de contenido HTTP y HTTPS en una sola página.
La solicitud de subrecursos con el protocolo HTTP no seguro debilita la seguridad de la página, ya que estas solicitudes son vulnerables a ataques en ruta, en los que un atacante espía una conexión de red y ve o modifica la comunicación entre dos partes. Mediante estos recursos, los atacantes pueden hacer un seguimiento de los usuarios y reemplazar el contenido de un sitio web. En el caso de contenido mixto activo, pueden tomar el control total de la página, no solo de los recursos no seguros.
Aunque muchos navegadores informan advertencias de contenido mixto a los usuarios, el informe suele ser demasiado tarde: ya se realizaron las solicitudes inseguras y la seguridad de la página está comprometida.
Ahora, la mayoría de los navegadores bloquean el contenido mixto por razones de seguridad. Cambia las solicitudes de contenido no seguras para proteger el contenido para asegurarte de que tu página se siga cargando correctamente.
Los dos tipos de contenido mixto
Hay dos tipos de contenido mixto: activo y pasivo.
El contenido mixto pasivo, lo que incluye imágenes, video y audio, no interactúa con el resto de la página, por lo que los ataques de intermediarios se limitan a lo que puede hacer si intercepta o cambia ese contenido.
El contenido mixto activo interactúa con toda la página. 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 tiene menos riesgo que el contenido mixto activo, pero ese riesgo sigue existiendo. Por ejemplo, un atacante puede hacer lo siguiente:
- Intercepta las solicitudes HTTP de imágenes de tu sitio y cambia o reemplaza esas imágenes.
- Reemplaza las imágenes de los botones para que los usuarios los confundan y, por ejemplo, borre el contenido que pretendían guardar.
- Reemplaza tus imágenes con contenido pornográfico para alterar el sitio.
- Reemplaza las imágenes de tus productos por anuncios de otro tipo.
Incluso si el atacante no cambia el contenido de tu sitio, puede hacer un seguimiento de los usuarios mediante solicitudes de contenido mixto. También pueden saber qué páginas visita un usuario y qué productos ve en función de imágenes y otros recursos que carga el navegador.
Si está presente 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 se carga en HTTPS. Puedes observar este comportamiento en esta demostración.
Hasta hace poco, el contenido mixto pasivo se cargaba en todos los navegadores, ya que el bloqueo habría dañado muchos sitios web. Esto está empezando a cambiar, por lo que es fundamental actualizar 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 tiene un código hard-coded 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 carga.
Cada vez que Chrome detecta contenido mixto o actualiza automáticamente el contenido mixto pasivo, registra mensajes detallados en la pestaña Problemas de las Herramientas para desarrolladores para aconsejarte sobre cómo solucionar el 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 u otras credenciales de acceso, robar cookies de sesión del usuario o redireccionar al usuario a un sitio completamente diferente.
Debido a que los riesgos del contenido mixto activo son muy elevados, 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 del navegador.
En esta demostración, se muestran ejemplos de contenido mixto activo. Carga el ejemplo mediante HTTP para ver el contenido que se bloquea cuando cargas el ejemplo con HTTPS. El contenido bloqueado también se detalla en la pestaña Problemas de las 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 califica como contenido opcionalmente bloqueable “cuando el riesgo de permitir su uso como contenido mixto se supera el riesgo de dañar partes importantes de la Web”. Este es un subconjunto de contenido mixto pasivo.
Todo el contenido mixto que no se bloquee de forma opcional se considera bloqueable y el navegador debe bloquearlo.
En los últimos años, el uso de HTTPS aumentó considerablemente y se convirtió en el claro predeterminado 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 distintas versiones del navegador de los distintos proveedores tratan el contenido mixto de manera diferente. En el peor de los casos, las versiones y los navegadores anteriores no bloquean el contenido mixto en absoluto, 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 el contenido sea visible y proteges a los usuarios contra el contenido peligroso que los navegadores más antiguos podrían no bloquear.