technical
Activar HSTS
MetricSpot busca la cabecera Strict-Transport-Security. HSTS obliga al navegador a usar HTTPS en cada visita y cierra la ventana de ataque de downgrade que deja abierta HTTPS por sí solo.
Qué comprueba esta auditoría
Revisa las cabeceras HTTP de respuesta en busca de Strict-Transport-Security (HSTS). Esta directiva indica a todos los navegadores que rechacen conexiones HTTP planas a tu dominio durante el tiempo que indique max-age.
Por qué importa
Incluso con HTTPS activado, la primerísima petición que hace un visitante nuevo suele ir en texto plano: teclea tudominio.com y el navegador intenta primero HTTP. Esa primera petición es la ventana para ataques de downgrade (man-in-the-middle al estilo sslstrip en una Wi-Fi hostil).
HSTS cierra esa ventana de golpe. Una vez que un navegador ha visto una cabecera HSTS válida, reescribe automáticamente cada petición futura a HTTPS durante todo el max-age, ignorando las URLs http:// que escriba el usuario.
Cómo solucionarlo
Envía la cabecera en cada respuesta HTTPS. Un valor seguro para producción:
Strict-Transport-Security: max-age=31536000; includeSubDomains
nginx:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Apache:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Cloudflare: SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) → activar, fijar max-age a 12 meses y marcar Include subdomains.
Cuando estés seguro, añade ; preload y envía tu dominio a la lista preload de Chrome: consulta la página de HSTS preload para conocer los requisitos.
Preguntas frecuentes
¿Qué max-age debería usar?
Empieza con max-age=300 (5 minutos) mientras pruebas y luego sube a 31536000 (un año). El preload de HSTS exige al menos un año.
¿HSTS me deja fuera si HTTPS se rompe?
Sí, esa es la idea. Si tu certificado caduca o tu configuración TLS se rompe, los usuarios que ya hayan visitado tu sitio no podrán acceder por HTTP como alternativa. Renueva los certificados de forma fiable (Let’s Encrypt + timer de systemd) y monitoriza la caducidad.
¿Y si no controlo los subdominios?
Quita includeSubDomains. La comprobación sigue pasando solo con max-age, aunque pierdes la protección sobre *.tudominio.com. No puedes hacer preload sin includeSubDomains.
Fuentes
Última actualización 2026-05-11