HSTS (Seguridad estricta de transporte HTTP)

Email y Seguridad
Un encabezado de seguridad que fuerza a los navegadores a conectarse solo a un sitio web sobre HTTPS, previniendo ataques de degradación.
← Volver al Glosario

¿Qué es HSTS?

HSTS (Seguridad Estricta de Transporte HTTP) es un mecanismo de seguridad web que dice a los navegadores que solo interactúen con un sitio web sobre HTTPS, nunca HTTP. Una vez que un navegador ve un encabezado HSTS, automáticamente actualizará todas las solicitudes futuras a HTTPS y se negará a conectar sobre HTTP plano, incluso si el usuario escribe http:// explícitamente.

Por qué HSTS es importante

Incluso con un certificado SSL válido, existen vulnerabilidades:

Ataque SSL Stripping

1. El usuario escribe "ejemplo.com" (sin https://)

2. Un atacante intercepta la solicitud HTTP inicial

3. El atacante hace proxy a HTTPS, presenta HTTP al usuario

4. El usuario cree que es seguro, pero el atacante ve todo

HSTS previene esto asegurando que los navegadores nunca hagan esa solicitud HTTP inicial.

Beneficios de HSTS

Sintaxis del encabezado HSTS

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

Directivas

DirectivaDescripción
max-ageSegundos para recordar HSTS (31536000 = 1 año)
includeSubDomainsAplica HSTS a todos los subdominios
preloadConsentimiento para inclusión en lista de precarga de navegador

Implementación de HSTS

Nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Apache

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Cloudflare

Habilita en SSL/TLS → Certificados de borde → Seguridad estricta de transporte HTTP

Express.js

const helmet = require('helmet');

app.use(helmet.hsts({

maxAge: 31536000,

includeSubDomains: true,

preload: true

}));

Lista de precarga de HSTS

La lista de precarga de HSTS es una lista de dominios codificados en navegadores que solo deberían ser accedidos sobre HTTPS. Esto elimina incluso la vulnerabilidad de la primera solicitud HTTP.

Requisitos de precarga

1. Certificado SSL válido

2. Redirige todo HTTP a HTTPS

3. Encabezado HSTS con:

- max-age de al menos 31536000 (1 año)

- Directiva includeSubDomains

- Directiva preload

4. Todos los subdominios deben soportar HTTPS

Envío a lista de precarga

1. Verifica requisitos: Usa hstspreload.org para verificar

2. Envía dominio: Ingresa dominio en hstspreload.org

3. Espera inclusión: Toma semanas a meses para actualizaciones de navegador

Advertencias de precarga

Precarga es permanente (prácticamente). Remover de la lista toma meses y requiere actualizaciones de navegador. Solo precarga si estás seguro de que todos los subdominios soportarán HTTPS indefinidamente.

Verificación de HSTS

DevTools del navegador:

1. Abre DevTools → Pestaña Network

2. Carga el sitio

3. Verifica Response Headers para Strict-Transport-Security

Usando curl:
curl -I https://ejemplo.com | grep -i strict
Usando DomScan:
curl "https://domscan.net/v1/health?domain=ejemplo.com"

# Reporta hasHSTS en detalles de seguridad

Estado de precarga:

Verifica hstspreload.org para ver si un dominio está precargado.

Estrategia de implementación de HSTS

Fase 1: max-age corto

Comienza con un max-age corto para probar:

Strict-Transport-Security: max-age=300

Si algo se rompe, los usuarios solo cachearon durante 5 minutos.

Fase 2: Aumenta la duración

Después de confirmar que HTTPS funciona en todos lados:

Strict-Transport-Security: max-age=86400

Fase 3: Añade subdominios

Una vez que todos los subdominios soportan HTTPS:

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

Fase 4: Despliegue completo + precarga

Después de meses de operación estable:

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

Luego envía a lista de precarga.

Problemas comunes de HSTS

Subdominio sin HTTPS: includeSubDomains rompe ese subdominio Entornos de desarrollo: HSTS cacheado de producción rompe dev local Encabezados de CDN/Proxy: Asegúrate de que el encabezado HSTS no sea eliminado por intermediarios Contenido mixto: Todos los recursos deben ser HTTPS; HSTS no arregla recursos HTTP incrustados

HSTS es esencial para cualquier sitio que maneje datos sensibles y fuertemente recomendado para todos los sitios HTTPS.

Pon Este Conocimiento en Práctica

Usa la API de DomScan para comprobar disponibilidad de dominios, estado y mucho más.