Saltar al contenido
SeguridadImportancia: Importante

HSTS: qué es y cómo activarlo en tu web

HSTS (HTTP Strict Transport Security) es una cabecera HTTP que le dice al navegador: “esta web solo se abre por HTTPS”. Durante el tiempo que indiques, el navegador convertirá cualquier intento de entrar por HTTP en HTTPS antes de enviar nada.

3 min de lecturaActualizada el

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

  1. 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.

  2. Empieza con un max-age corto, por ejemplo max-age=86400 (un día), y comprueba durante unos días que todo sigue funcionando.

  3. Sube a max-age=31536000 (un año), que es el valor recomendado.

  4. Añade includeSubDomains solo 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.

  5. Deja preload para 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.

  6. 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.

  7. Envíala solo en las respuestas HTTPS: en las de HTTP los navegadores la ignoran.

Nginx (en el bloque del servidor HTTPS)Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Apache (.htaccess o configuración del sitio)Apache
<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 .htaccess de 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

Descubre qué más frena tu web

Nota de 0 a 100 y los problemas ordenados por importancia, con la solución de cada uno. Gratis y en menos de un minuto.