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