Seguridad web

HSTS (HTTP Strict Transport Security)

Se lee en aproximadamente 4 minutos

Qué es HSTS

HSTS (HTTP Strict Transport Security) es un mecanismo de seguridad en el que el servidor web instruye al navegador a "usar siempre HTTPS para acceder a este dominio en adelante". Se activa agregando el encabezado Strict-Transport-Security a la respuesta HTTP.

Sin HSTS configurado, cuando un usuario accede a http://example.com, la comunicación se realiza en texto plano durante el instante hasta que el servidor redirige a HTTPS. Un ataque de intermediario (SSL stripping) puede aprovechar este momento. Con HSTS configurado, el navegador reescribe la solicitud HTTP a HTTPS antes de enviarla, eliminando fundamentalmente este ataque.

Configuración y directivas de HSTS

HSTS se configura con el siguiente encabezado de respuesta.

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

  • max-age: Segundos durante los cuales el navegador recuerda la política HSTS. El valor recomendado es 31536000 (1 año). Para la implementación inicial, es seguro comenzar con 300 (5 minutos) o 86400 (1 día) y extender gradualmente si no hay problemas.
  • includeSubDomains: Aplica HSTS también a los subdominios. Verificar que todos los subdominios como api.example.com o cdn.example.com son compatibles con HTTPS antes de activarlo. Si hay subdominios que solo operan con HTTP, esos subdominios se volverán inaccesibles.
  • preload: Indicador de intención de registro en la lista HSTS Preload. Este indicador por sí solo no registra en la lista Preload; se requiere una solicitud por separado.

Entre los encabezados de seguridad, HSTS tiene relativamente pocos efectos secundarios y puede forzar de manera confiable la comunicación cifrada mediante TLS/SSL, por lo que los sitios que ya son compatibles con HTTPS deberían implementarlo tempranamente.

Funcionamiento de la lista HSTS Preload

El HSTS normal tiene el "problema de la primera visita". El navegador recibe el encabezado HSTS en el primer acceso HTTPS, por lo que HSTS no funciona cuando el usuario accede al dominio por primera vez.

La lista HSTS Preload resuelve este problema. Es una lista de dominios compatibles con HSTS codificada directamente en el navegador, y se puede solicitar desde hstspreload.org gestionado por Chrome. Una vez registrado, HTTPS se fuerza desde el principio incluso para dominios que el usuario nunca ha visitado.

Los requisitos para el registro en la lista Preload son los siguientes.

  • Usar un certificado digital válido
  • Tener configurada la redirección de HTTP a HTTPS
  • max-age de 31536000 (1 año) o más
  • Incluir las directivas includeSubDomains y preload

Como precaución, la eliminación de la lista Preload puede tardar varios meses. Verifique cuidadosamente que todos los subdominios son compatibles con HTTPS antes del registro.

Precauciones y enfoque gradual para la implementación de HSTS

HSTS es potente, pero los errores de configuración pueden hacer que el sitio sea inaccesible. Se recomienda el siguiente enfoque gradual.

  1. Paso 1: Configurar con max-age=300 (5 minutos) y verificar que todo el sitio funciona correctamente con HTTPS.
  2. Paso 2: Extender a max-age=86400 (1 día) y operar durante aproximadamente una semana para confirmar que no hay problemas.
  3. Paso 3: Expandir a max-age=31536000; includeSubDomains.
  4. Paso 4: Si es necesario, agregar preload y solicitar el registro en la lista Preload.

Un caso que requiere especial atención es cuando CDN o servicios de terceros sirven recursos por HTTP; después de aplicar HSTS, se producirán errores de contenido mixto (Mixed Content). Verifique que todos los recursos externos se sirven por HTTPS antes de la implementación.

Combinando con la directiva upgrade-insecure-requests de CSP, las referencias a recursos HTTP dentro de la página se reescriben automáticamente a HTTPS, lo que puede mitigar los problemas de contenido mixto durante el período de transición.

Conceptos erróneos comunes

Si se redirige a HTTPS, HSTS es innecesario
Durante la redirección de HTTP a HTTPS, la primera solicitud se envía en texto plano. En este instante puede establecerse un ataque de intermediario (SSL stripping). HSTS reescribe la solicitud HTTP a HTTPS en el lado del navegador, defendiendo contra ataques que la redirección no puede prevenir.
Configurar HSTS se aplica inmediatamente a todos los usuarios
El HSTS normal solo se activa cuando el navegador recibe el encabezado, por lo que no protege en la primera visita. Para proteger a todos los usuarios desde la primera visita, es necesario el registro en la lista HSTS Preload.

Términos relacionados

Artículos relacionados