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 Optional
Si este par谩metro opcional est谩 especificado, la regla aplica para todos los subdominiones del sitio.
preload Optional
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 conexines 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. 

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

Especificaci贸n Estado Comentario
HTTP Strict Transport Security (HSTS) IETF RFC Definici贸n inicial

Compatibilidad de navegadores

No compatibility data found. Please contribute data for "http/headers/strict-transport-security" (depth: 1) to the MDN compatibility data repository.

Ver tambi茅n