Saltar al contenido principal

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.

El flujo del SSL stripping:
1. El usuario accede a http://example.com
2. El atacante intercepta la solicitud HTTP
3. El atacante se conecta al servidor mediante HTTPS (retransmitiendo la comunicación legítima)
4. La respuesta se devuelve al usuario en HTTP plano
5. La entrada del usuario (contraseñas, números de tarjeta, etc.) se entrega al atacante en texto plano
Cuando HSTS está habilitado: el navegador convierte internamente la solicitud a HTTPS antes de enviar la solicitud HTTP, por lo que el ataque no puede prosperar en el paso 1

Directivas de la cabecera HSTS

DirectivaDescripciónValor recomendado
max-ageEl número de segundos que el navegador recuerda la política HSTS. Durante este periodo, el navegador convierte automáticamente el acceso HTTP a HTTPS31536000 (1 año)
includeSubDomainsAplica HSTS también a los subdominios. Se fuerza HTTPS en api.example.com, cdn.example.com, etc.Se recomienda configurarlo
preloadIndica la intención de registrarse en la HSTS Preload List. Viene preintegrado en el navegador, ofreciendo protección desde el primer accesoObligatorio al registrarse en la Preload List

Ejemplo de una cabecera HSTS completa:

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

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.

Añadir preload a la cabecera HSTSSolicitar el registro en hstspreload.orgEl equipo de Chromium lo revisaSe integra en el código fuente del navegadorSe fuerza HTTPS desde el primer acceso

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.

Step 1 (5 minutos)
max-age=300

Primero verifica el funcionamiento durante 5 minutos. Aunque haya un problema, esperar 5 minutos lo resuelve.

Step 2 (1 semana)
max-age=604800

Amplía a 1 semana. Confirma que todas las páginas, incluidos los subdominios, funcionan correctamente con HTTPS.

Step 3 (1 mes)
max-age=2592000; includeSubDomains

Un mes incluyendo los subdominios. Confirma que la renovación automática de certificados funciona correctamente.

Step 4 (1 año)
max-age=31536000; includeSubDomains; preload

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.

Términos relacionados

¿Te resultó útil este artículo?

XHatena