HTTP Strict Transport Security (HSTS)

HTTP Strict Transport Security (HSTS) es una política de seguridad que permite a un sitio web indicar a los navegadores que solo debe accederse mediante conexiones seguras HTTPS, evitando conexiones inseguras con HTTP.

Esto ayuda a proteger a los usuarios contra ataques como:

  • ataques de man-in-the-middle

  • ataques de downgrade de protocolo

  • robo de cookies de sesión

¿Cómo funciona?

HSTS se implementa enviando una cabecera HTTP desde el servidor:

Strict-Transport-Security: max-age=31536000

Esta cabecera indica al navegador que:

  • durante el tiempo indicado (max-age)

  • solo debe conectarse al sitio usando HTTPS

Por ejemplo, si el usuario intenta visitar:

http://example.com

el navegador lo convertirá automáticamente en:

https://example.com

sin siquiera intentar la conexión HTTP.

Ejemplo de configuración

Un ejemplo común es:

Strict-Transport-Security: max-age=31536000; includeSubDomains

Esto significa:

  • max-age=31536000 → aplicar la política durante 1 año

  • includeSubDomains → aplicar la política también a todos los subdominios

El problema de la primera conexión

HSTS tiene una limitación importante.

La primera vez que un usuario visita un sitio, el navegador aún no conoce la política HSTS.
Esto significa que el primer acceso todavía podría hacerse por HTTP.

Un atacante podría aprovechar ese momento para realizar un ataque.

HSTS Preload

Para solucionar ese problema, algunos navegadores incluyen una lista precargada de sitios que deben usar HTTPS siempre.

Esta lista se llama HSTS preload list.

Navegadores como:

  • Google Chrome

  • Mozilla Firefox

  • Microsoft Edge

incluyen dominios en esa lista para que incluso la primera conexión se haga mediante HTTPS.

Ventajas de HSTS

Activar HSTS en un sitio web tiene varios beneficios:

  • evita conexiones HTTP inseguras

  • protege contra ataques de interceptación

  • protege cookies de sesión

  • obliga a usar conexiones cifradas

En resumen, añade una capa extra de seguridad a HTTPS.

Conclusión

Si tu sitio ya funciona correctamente con HTTPS, habilitar HSTS es una buena práctica de seguridad.

Simplemente añadiendo la cabecera:

Strict-Transport-Security: max-age=31536000

puedes asegurarte de que los navegadores siempre usen HTTPS para acceder a tu sitio.