Por qué importa
La redirección de HTTP a HTTPS protege, pero deja un hueco: la primera petición, la que va por HTTP, viaja sin cifrar. En una wifi pública, alguien puede interceptarla y mantener a la víctima en una copia sin cifrar de tu web (un ataque llamado “SSL stripping”). Con HSTS, el navegador que ya ha visitado tu web ni siquiera hace esa petición.
También impide saltarse un aviso de certificado no válido: con HSTS activo, el navegador no ofrece la opción de continuar. Por eso conviene activarlo cuando HTTPS ya funciona bien en todo tu dominio, no antes.
Cómo lo comprueba Posiciona
Leemos la cabecera Strict-Transport-Security de la respuesta de tu página. Sin ella, la puntuación es 30. Con max-age=0 o sin max-age, 0, porque eso desactiva la protección. Con max-age de al menos un año (31536000 segundos) e includeSubDomains, 90, y 100 si además lleva preload. Con menos de un año o sin includeSubDomains, 60.
En la nota de Seguridad esta comprobación cuenta como “importante” (peso 3 de 5).
Cómo solucionarlo
Antes de nada, asegúrate de que todas las páginas funcionan por HTTPS y de que HTTP redirige a HTTPS. HSTS no sustituye a esa redirección: la complementa.
Empieza con un
max-agecorto, por ejemplomax-age=86400(un día), y comprueba durante unos días que todo sigue funcionando.Sube a
max-age=31536000(un año), que es el valor recomendado.Añade
includeSubDomainssolo después de revisar todos tus subdominios (tienda, blog, correo web, intranet, entornos de pruebas): cualquiera que no tenga HTTPS dejará de abrirse en los navegadores que hayan recibido la cabecera.Deja
preloadpara el final, y solo si lo tienes claro. Con él, y tras registrar el dominio en hstspreload.org, tu dominio entra en una lista que los navegadores traen de serie; salir de ella tarda meses.Configura la cabecera en el servidor (ejemplos abajo), en tu CDN (en Cloudflare, en la sección SSL/TLS, apartado de certificados perimetrales o Edge Certificates) o en el panel del hosting: algunos, como Plesk, tienen una opción de HSTS junto a la del certificado.
Envíala solo en las respuestas HTTPS: en las de HTTP los navegadores la ignoran.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>En WordPress
- Sin tocar el servidor, el plugin Headers Security Advanced & HSTS WP añade HSTS y otras cabeceras de seguridad desde el escritorio de WordPress.
- Si prefieres el servidor y tu hosting usa Apache, añade la línea del ejemplo al
.htaccessde WordPress, fuera del bloque que el propio WordPress reescribe (el que empieza por# BEGIN WordPress).
En Shopify
- En Shopify, las cabeceras HTTP, HSTS incluida, las gestiona la plataforma y no se pueden cambiar desde el tema. Si nuestro informe la marca como mejorable, no es algo que puedas corregir tú; como mucho, consultarlo con el soporte de Shopify.
- Lo que sí depende de ti es que el dominio esté bien conectado y el certificado activo, en Configuración → Dominios.
Preguntas frecuentes
¿Qué es la HSTS preload list?
Es una lista de dominios que Chrome, Firefox, Safari y Edge traen incorporada: esos dominios se abren siempre por HTTPS, incluso en la primera visita. Para entrar hay que enviar HSTS con max-age de al menos un año, includeSubDomains y preload, y solicitarlo en hstspreload.org. Es una protección excelente, pero difícil de deshacer: la salida de la lista puede tardar meses en llegar a los navegadores.
¿Qué pasa si activo HSTS y luego falla el certificado?
Los navegadores que ya hayan visitado tu web se negarán a abrirla por HTTP y no dejarán saltarse el aviso del certificado hasta que caduque el max-age. Por eso conviene empezar con un valor corto y tener la renovación del certificado automatizada y vigilada. Si necesitas desactivarlo, envía max-age=0 por HTTPS: cada navegador olvidará la política en su siguiente visita.
Guías relacionadas
- Certificado SSLQue el certificado HTTPS sea válido, corresponda a tu dominio y no esté a punto de caducar.
- Redirecciones a HTTPS y wwwQue http, https, con www y sin www lleven todas a la misma dirección HTTPS.
- Cabeceras de seguridadQue la web envíe X-Content-Type-Options, X-Frame-Options, Referrer-Policy y Permissions-Policy.