Contenido Mixto HTTP/HTTPS: Guia Completa
El contenido mixto ocurre cuando una pagina servida por HTTPS carga recursos a traves de HTTP inseguro. Esto rompe la cadena de seguridad: aunque la pagina principal esta cifrada, los recursos no cifrados pueden ser interceptados o modificados por atacantes. Los navegadores modernos bloquean el contenido mixto activo y muestran advertencias para el pasivo, degradando la experiencia del usuario y la confianza en tu sitio.
Estadisticas en tiempo real
68%
Tasa de aprobacion
229
Sitios analizados
74/100
Puntuacion media
Datos basados en escaneos reales de EscanearVulnerabilidades
Que es
El contenido mixto se produce cuando una pagina web cargada mediante HTTPS incluye recursos (scripts, estilos, imagenes, iframes, fonts, etc.) que se solicitan mediante HTTP sin cifrar. Existen dos tipos: contenido mixto activo y pasivo. El contenido mixto activo incluye recursos que pueden modificar el DOM de la pagina, como scripts JavaScript, hojas de estilo CSS, iframes y objetos Flash. Este tipo es especialmente peligroso porque un atacante que intercepte la conexion puede inyectar codigo malicioso. El contenido mixto pasivo incluye recursos que no pueden modificar la pagina, como imagenes, audio y video, pero que igualmente pueden ser interceptados o reemplazados.
Por que importa
El contenido mixto activo es un riesgo de seguridad critico. Un atacante que realice un ataque man-in-the-middle puede reemplazar un archivo JavaScript cargado por HTTP con codigo malicioso, obteniendo control total sobre la pagina HTTPS. Puede robar credenciales, redirigir al usuario, instalar malware o modificar el contenido de la pagina. Los navegadores modernos bloquean automaticamente el contenido mixto activo, lo que puede romper funcionalidades de tu sitio. El contenido mixto pasivo, aunque menos peligroso, permite a un atacante rastrear la actividad del usuario o reemplazar imagenes con contenido inapropiado. Ademas, cualquier contenido mixto impide que el navegador muestre el candado de seguridad.
Problemas comunes
-
URLs absolutas con HTTP hardcodeadas: referencias a recursos usando http:// en el HTML, CSS o JavaScript, en lugar de HTTPS o URLs relativas al protocolo.
-
Recursos de terceros sin HTTPS: cargar scripts, fonts o imagenes desde CDNs o servicios externos que no soportan HTTPS.
-
CSS con referencias HTTP: hojas de estilo que importan fuentes, imagenes de fondo u otras hojas de estilo mediante HTTP.
-
Contenido generado por el CMS con HTTP: editores WYSIWYG que insertan URLs absolutas con HTTP en el contenido almacenado en la base de datos.
-
APIs y endpoints HTTP: llamadas AJAX o fetch a APIs internas o externas que usan HTTP en lugar de HTTPS.
-
Iframes con contenido HTTP: widgets, formularios de terceros o contenido embebido que se carga sin cifrar.
Como solucionarlo
Realiza una auditoria completa de tu sitio web para identificar todos los recursos cargados por HTTP. Usa las herramientas de desarrollo del navegador (pestaƱa Console y Network) para detectar contenido mixto. Cambia todas las URLs de http:// a https:// o usa URLs relativas al protocolo (//dominio.com/recurso). Para contenido en base de datos, realiza un buscar y reemplazar de http:// a https://. Configura la cabecera CSP upgrade-insecure-requests para que el navegador actualice automaticamente las peticiones HTTP a HTTPS. Verifica que todos los servicios de terceros que usas soporten HTTPS.
<!-- CSP para actualizar automaticamente peticiones inseguras -->
<meta http-equiv="Content-Security-Policy"
content="upgrade-insecure-requests">
<!-- Nginx - Cabecera CSP -->
add_header Content-Security-Policy "upgrade-insecure-requests" always;
<!-- URLs relativas al protocolo (no recomendado para enlace externo) -->
<script src="//cdn.example.com/script.js"></script>
<!-- Mejor: siempre usar HTTPS explicito -->
<script src="https://cdn.example.com/script.js"></script>
# WordPress - Buscar y reemplazar en base de datos
# Usando WP-CLI:
wp search-replace 'http://tudominio.com' 'https://tudominio.com' --all-tables
# SQL directo (hacer backup primero):
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://tudominio.com', 'https://tudominio.com');
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://tudominio.com', 'https://tudominio.com'); Comprueba la seguridad de tu sitio web
Nuestro escaner analiza automaticamente la configuracion de contenido mixto http/https junto con otros 9 checks de seguridad. Recibe un informe completo con recomendaciones en minutos.
Escanea tu sitio web gratisGuias relacionadas
Redireccion HTTPS: Guia Completa
Aprende por que la redireccion HTTP a HTTPS es esencial, como configurarla en Apache y Nginx, que es...
Certificado SSL/TLS: Guia Completa
Aprende que es un certificado SSL/TLS, por que es fundamental para la seguridad web, como detectar p...
Cabeceras de Seguridad HTTP: Guia Completa
Guia completa sobre cabeceras de seguridad HTTP: CSP, HSTS, X-Frame-Options, X-Content-Type-Options,...