Strict-Transport-Security
HTTP Strict-Transport-Security
(a menudo abreviado como HSTS) es una característica de seguridad que permite a un sitio web indicar a los navegadores que sólo se debe comunicar con HTTPS en lugar de usar HTTP.
Tipo de Encabezado | Encabezado de Respuesta |
---|---|
Nombre de Encabezado Prohibido | no |
Sintaxis
Strict-Transport-Security: max-age=<expire-time> Strict-Transport-Security: max-age=<expire-time>; includeSubDomains Strict-Transport-Security: max-age=<expire-time>; preload
Directivas
max-age=<expire-time>
-
Es el tiempo, en segundos, que el navegador debe recordar que el sitio solo debe ser accsible usando HTTPS.
includeSubDomains
Opcional-
Si este parámetro opcional está especificado, la regla aplica para todos los subdominios del sitio.
preload
Opcional-
Ver Precargando Strict Transport Security para mas detalles. No es parte de la especificación.
Descripción
Si un sitio web acepta una conexión a través de HTTP y redirecciona a HTTPS, el usuario en este caso podría inicialmente hablar a la versión no encriptada del sitio antes de ser redireccionado, si por ejemplo el usuario tipea http://www.foo.com/
o incluso solo foo.com.
Esto habilita el potencial ataque man-in-the-middle, donde el redireccionamiento podría ser aprovechado para enviar al usuario a un sitio malicioso en lugar de la versión segura de la página original.
El encabezado HTTP Strict Transport Security permite a un sitio web informar al navegador que nunca cargue el sitio usando HTTP y que debe automáticamente convertir todos los intentos de acceso HTTP a HTTPS.
Nota:
El encabezado Strict-Transport-Security
es ignorado por el navegador cuando el sitio es accedido usando HTTP; esto es porque un atacante podría interceptar las conexiones HTTP e inyectar el encabezado o removerlo. Cuando el sitio es accedido a través de HTTPS con un certificado sin errores, el navegador sabe que el sitio es capaz de usar HTTPS y cumple con lo indicado en el encabezado Strict-Transport-Security
.
Un escenario de ejemplo
Tu ingresas a una red WiFi libre en un areopuerto y empiezas a nevegar por el internet visitando tu servicio de banca en linea para revisar tu estado de cuenta y pagar algunas cuentas. Desafortunadamente, el punto de acceso que estás usando es actualmente un computador portátil de un hacker. Ellos están interceptando todas tus solicitudes originales HTTP y redireccionando a un clone del sitio de tu banco en lugar del sitio real. Ahora tus datos privados están expuestos al hacker.
Strict Transport Security resuelve este problema; siempre que hayas ingresado al sitio de tu banco una vez usando HTTPS y el sitio del banco use Strict Transport Security. Tu navegador sabe que debe usar HTTPS, lo cual previene el hacker realizar este tipo de ataque.
Como el navegador lo maneja
La primera vez que accediste al sitio usando HTTPS y este retornó el encabezado Strict-Transport-Security
, el navegador registra esta información, de tal manera que en futuros intentos para cargar el sitio usando HTTP va a usar en su lugar HTTPS automáticamente.``
Cuando el tiempo de expiración especificado por el encabezado Strict-Transport-Security haya pasado, el siguiente intento de cargar el sitio a través de HTTP se va a procesar de forma normal.
En cualquier momento que el encabezado Strict-Transport-Security sea entregado el navegador, este actualiza el tiempo de expiración para el sitio, así los sitios pueden refrescar su información y prevenir el tiempo de expiración. Para deshabilitarlo sería necesario configurar max-age a 0 sobre una conexión HTTPS, entonces automáticamente expira el encabezado Strict-Transport-Security permitiendo acceso vía HTTP.
Precargando Strict Transport Security
Google mantiene un servicio de precarga HSTS. Siguiendo la siguiente guía y enviando un dominio válido, los navegadores nunca se conectarán a utu dominio usando una conexión insegura. Mientras el servicio esté sobre Google, todos los navegadores tienen determinado intentar usar la lista precargada.
- Información de lista precargada HSTS en Chrome: https://www.chromium.org/hsts
- Consulta de lista precargada de Firefox: nsSTSPreloadList.inc
Ejemplos
Todos los presentes y futuros subdominios usarán HTTPS durante 1 año.
This blocks access to pages or sub domains that can only be served over HTTP.
Strict-Transport-Security: max-age=31536000; includeSubDomains
Especificaciones
Specification |
---|
HTTP Strict Transport Security (HSTS) # section-6.1 |
Compatibilidad de navegadores
BCD tables only load in the browser
Ver también
- Blog post: HTTP Strict Transport Security has landed!
- Blog post: HTTP Strict Transport Security (force HTTPS)
- OWASP Article: HTTP Strict Transport Security
- Wikipedia: HTTP Strict Transport Security