Mixed Content: qué es y por qué tu web parece insegura aunque tenga SSL

Tienes el certificado SSL instalado. El candado verde del navegador debería salir. Pero en algunas páginas no sale, o sale un triángulo de advertencia que dice "No seguro". ¿Cómo es posible si tienes SSL?

La respuesta se llama Mixed Content (contenido mixto). Y es uno de los problemas más comunes y menos entendidos en webs modernas.

Qué es el Mixed Content

Cuando tu web se sirve por HTTPS, todo el tráfico entre el usuario y tu servidor va cifrado. Es seguro. Pero si tu HTML carga algún recurso por http:// en lugar de https://, el navegador detecta que estás mezclando contenido seguro con contenido inseguro.

Ese recurso puede ser:

Qué hace el navegador cuando detecta Mixed Content

No todos los recursos mixtos se tratan igual:

Cómo detectar el Mixed Content en tu web

Hay dos formas rápidas:

  1. Consola de DevTools. Abre la web en Chrome, pulsa F12, ve a la pestaña "Console". Si hay Mixed Content, verás un aviso rojo o amarillo que dice "Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure resource 'http://...'. This request has been blocked."
  2. Buscar en el HTML. Descarga el HTML de tu web (Ctrl+U en el navegador), busca por http:// y revisa si aparece en alguna etiqueta de las anteriores.

Cómo arreglarlo

La solución es simple: cambiar el http:// por https:// en todos los recursos. Si el recurso de terceros no soporta HTTPS, tienes dos opciones:

Para las etiquetas <base>, cambia el href a HTTPS o elimínalas si no las necesitas.

Cómo lo comprueba Sealgrade

Nuestro análisis descarga el HTML de la web y busca Mixed Content en las siguientes etiquetas:

<img>, <script>, <link>, <iframe>, <audio>, <video>, <source>, <embed>, <object>, <track>, <base>.

Y busca los atributos que cargan recursos: src, href, srcset, poster y data.

Si encuentra alguno con http://, añade el hallazgo INV-20 (severidad media, CWE-1021) al informe y resta 5 puntos al Health Score.

No comprobamos <a href> (enlaces salientes) ni <form action> ni <meta refresh>, porque no son Mixed Content según la especificación de W3C. Si los metiéramos, generaríamos falsos positivos constantes.

Cómo saber si tu web tiene Mixed Content

Puedes auditar tu web gratis en Sealgrade. En 30 segundos verás si el hallazgo INV-20 aparece en tu informe y, si aparece, exactamente qué recursos están causando el problema.

Auditar mi web gratis →

Y si gestionas webs de clientes, el panel de agencia te permite monitorizar todas desde un único sitio y avisar a tiempo.

Ver planes →