HSTS - Seguridad de transporte estricta HTTP
Lectura de 2 min aprox.
HSTS (HTTP Strict Transport Security) es un mecanismo de seguridad mediante el cual un servidor web indica al navegador que «a partir de ahora se conecte a este dominio solo mediante HTTPS». Se estandarizó como RFC 6797 en 2012. Al forzar la comunicación cifrada mediante SSL/TLS, previene los ataques de SSL stripping, un tipo de ataque de intermediario. Se puede implementar simplemente añadiendo una línea a la cabecera de respuesta HTTP, lo que lo convierte en una medida de seguridad sumamente rentable.
Qué es un ataque de SSL stripping
El SSL stripping es una técnica de ataque que Moxie Marlinspike presentó en Black Hat DC en 2009. Cuando un usuario accede a http://example.com, el servidor normalmente lo redirige a https://example.com. El atacante intercepta esta comunicación HTTP inicial, manteniendo la conexión con el usuario en HTTP plano mientras se comunica con el servidor mediante HTTPS. Desde la perspectiva del usuario, el sitio se muestra con normalidad, pero el contenido de la comunicación queda totalmente expuesto al atacante.
Directivas de la cabecera HSTS
| Directiva | Descripción | Valor recomendado |
|---|---|---|
| max-age | El número de segundos que el navegador recuerda la política HSTS. Durante este periodo, el navegador convierte automáticamente el acceso HTTP a HTTPS | 31536000 (1 año) |
| includeSubDomains | Aplica HSTS también a los subdominios. Se fuerza HTTPS en api.example.com, cdn.example.com, etc. | Se recomienda configurarlo |
| preload | Indica la intención de registrarse en la HSTS Preload List. Viene preintegrado en el navegador, ofreciendo protección desde el primer acceso | Obligatorio al registrarse en la Preload List |
Ejemplo de una cabecera HSTS completa:
HSTS Preload List
El HSTS ordinario tiene un «problema del primer acceso». El navegador recibe la cabecera HSTS solo en la primera conexión HTTPS, y cualquier acceso HTTP previo no queda protegido. La HSTS Preload List es un mecanismo que resuelve este problema.
Una vez registrado en la Preload List, los navegadores principales como Chrome, Firefox, Safari y Edge fuerzan HTTPS desde el primer acceso. Sin embargo, como la baja de la lista tarda varios meses, registrarse mientras la compatibilidad con HTTPS aún es incompleta conlleva el riesgo de dejar el sitio inaccesible.
Un procedimiento de implementación por fases
Es más seguro implementar HSTS por etapas. Si configuras max-age=31536000 de inmediato, cualquier error de configuración de HTTPS podría dejar el sitio inaccesible durante un largo periodo.
Primero verifica el funcionamiento durante 5 minutos. Aunque haya un problema, esperar 5 minutos lo resuelve.
Amplía a 1 semana. Confirma que todas las páginas, incluidos los subdominios, funcionan correctamente con HTTPS.
Un mes incluyendo los subdominios. Confirma que la renovación automática de certificados funciona correctamente.
La forma final. La etapa en la que se puede considerar el registro en la Preload List.
Uso conjunto con CSP
HSTS es un mecanismo que fuerza el cifrado de la ruta de comunicación; no controla el contenido dentro de una página. Al usarlo junto con CSP (Content Security Policy), puedes reforzar la seguridad tanto desde la perspectiva de la ruta de comunicación como del contenido. La directiva upgrade-insecure-requests de CSP convierte automáticamente a HTTPS las referencias a recursos HTTP dentro de una página, y complementa a HSTS. Para aplicar a fondo el cifrado en tránsito, se recomienda configurar tanto HSTS como CSP.
Consulta también La seguridad de las contraseñas del navegador, La lista de verificación de seguridad para startups y La seguridad del Wi-Fi público.libros relacionados con seguridad web (Amazon) son recomendables para aprender las mejores prácticas de operación de HTTPS.
¿Te resultó útil este artículo?