Cómo la BBC está implementando HSTS para mejorar la seguridad y el rendimiento.

La BBC lanzará HSTS en su sitio web para mejorar la seguridad y el rendimiento. Descubre qué significa y cómo puede ayudarte HSTS.

La adopción de HTTPS ha ido en aumento en los últimos años. Según el informe web del archivo HTTP de 2021, alrededor del 91% de todas las solicitudes para computadoras y dispositivos móviles se entregaron a través de HTTPS. HTTPS no solo llegó para quedarse, sino que también es un requisito previo necesario para usar funciones como Service Worker y protocolos modernos como HTTP/2 y HTTP/3.

Hace poco, Neil Craig, un arquitecto técnico líder de la BBC, twitteó que se está implementando lentamente HTTP con Seguridad de Transporte Estricta (HSTS) para bbc.com. Veamos qué significa esto para la BBC y cómo podría ayudarte.

El problema

A menudo, los servidores web detectan solicitudes en los puertos 80 y 443. El puerto 80 es para solicitudes HTTP no seguras, mientras que el 443 es para HTTPS seguros. Esto puede generar un problema, ya que cuando ingresas una dirección en la barra de direcciones sin el prefijo de protocolo https:// (como suele hacerlo la mayoría de los usuarios), algunos navegadores dirigirán el tráfico a la versión HTTP no segura de un sitio por motivos heredados (aunque este no siempre es el caso).

Una forma común de garantizar que los usuarios no accedan a una versión no segura de un sitio web es colocar un redireccionamiento de HTTP a HTTPS para todas las solicitudes. Esto funciona, pero da inicio a la siguiente cadena de eventos:

  1. El servidor recibe una solicitud a través de HTTP.
  2. El servidor emite un redireccionamiento para ir al equivalente HTTPS del recurso solicitado.
  3. El servidor a través de HTTPS debe negociar una conexión segura con el navegador.
  4. El contenido se carga como de costumbre.

Si bien los redireccionamientos funcionan correctamente, pueden estar mal configurados de formas que permiten el acceso a la versión no segura de un sitio. Incluso si todo está configurado correctamente, sigue habiendo un problema de seguridad, ya que el usuario aún se conectará a través de HTTP no seguro durante la fase de redireccionamiento, lo que expone a los usuarios a la posibilidad de ataques de intermediarios peligrosos.

Ingresar HSTS

Navegadores compatibles

  • 4
  • 12
  • 4
  • 7

Origen

El encabezado de respuesta HTTP Strict-Transport-Security para las solicitudes HTTPS determina el HSTS. Cuando se configura, las visitas recurrentes a un sitio web activan un redireccionamiento especial conocido como “Redireccionamiento interno 307”, que es cuando el navegador maneja la lógica de redireccionamiento, en lugar del servidor. Esto evita que se intercepte la solicitud, ya que nunca sale del navegador, por lo que es más segura. Como beneficio adicional, estos tipos de redireccionamiento son extremadamente rápidos, por lo que se elimina cualquier latencia notable durante un salto de HTTP a HTTPS.

Un redireccionamiento interno 307 de HTTP a HTTPS, activado por un encabezado HSTS. El redireccionamiento 307 solo tarda 2 milisegundos.

De manera similar a la sintaxis de la directiva max-age de Cache-Control, un encabezado HSTS especifica una directiva max-age. Esta directiva toma un valor en segundos que especifica por cuánto tiempo es válida la política:

Strict-Transport-Security: max-age=3600

En el ejemplo anterior, la política solo debería entrar en vigencia durante una hora.

Implementa HSTS

El principal inconveniente de implementar HSTS es que no puedas tratar tu origen como estrictamente seguro. Supongamos que tiene varios subdominios desde los que entrega recursos, pero es posible que no todos sean seguros. En este caso, un encabezado HSTS podría dañar tu sitio web.

La BBC adoptó el enfoque correcto para implementar HSTS. Como mencionó Neil Craig en su tweet, el valor inicial que se estableció para bbc.com era max-age=10.

Este enfoque significa que, en un principio, la política solo estuvo vigente durante diez segundos. Esto no proporciona un gran beneficio, pero la idea es analizar si puede haber problemas con la aplicación de HSTS. Con el tiempo, puedes aumentar la política de forma incremental y ver si se producen problemas. Al momento de la redacción de este documento, bbc.com especificaba una política de HSTS de max-age=86400, y es casi seguro que esta aumente con el tiempo.

Por supuesto, no es conveniente que obtengas un valor de max-age largo cuando implementes HSTS. Es posible que, de repente, te apresures para solucionar problemas mientras los usuarios los experimentan. Comience de a poco y, luego, aumente con el tiempo. Cuando estés seguro de que todo está bien, puedes establecer la directiva max-age para un período mucho más largo. Se recomienda establecer max-age en uno o dos años cuando se lance por completo.

Obtén navegaciones iniciales más seguras y rápidas con la lista de precarga de HSTS

La política de HSTS solo entrará en vigencia después de la primera visita al sitio web, por lo que los beneficios no estarán presentes para la primera visita al sitio. Esto seguirá siendo necesario el redireccionamiento no seguro. Sin embargo, puedes precargar tu política de HSTS enviando tu sitio web a la lista de precarga de HSTS, que es una lista codificada de sitios web que el navegador sabe que son estrictamente HTTPS. Cuando tu sitio esté en la lista de precarga, la primera visita también estará protegida, y la latencia de redireccionamiento de HTTP a HTTPS a través de HSTS será instantánea.

Pruébalo tú mismo

Si la BBC se siente a gusto probando HSTS, es muy probable que puedas hacer lo mismo en tu sitio web. Prueba tu sitio web y, si quieres acelerar el proceso, agrégalo a la lista de precarga de HSTS cuando sepas con certeza que no habrá errores para brindarles a tus usuarios una experiencia y más segura.