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 viene aumentando de forma constante en los últimos años. Según el Almanac web de 2021 de HTTP Archive, 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 es un requisito previo necesario para usar funciones como Service Worker y protocolos modernos como HTTP/2 y HTTP/3.
Recientemente, Neil Craig, un arquitecto técnico principal de la BBC, tuviste que HTTP con Seguridad de Transporte Estricta (HSTS) se está implementando lentamente para bbc.com. Descubre qué significa eso para la BBC y qué podría significar para ti.
El problema
Los servidores web a menudo escuchan solicitudes en los puertos 80 y 443. El puerto 80 es para solicitudes HTTP no seguras, mientras que el 443 es para HTTPS seguro. Esto puede crear un problema, porque 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 insegura de un sitio por razones heredadas (aunque 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 ciertamente funciona, pero inicia la siguiente cadena de eventos:
- El servidor recibe una solicitud HTTP.
- El servidor emite un redireccionamiento para ir al equivalente de HTTPS del recurso solicitado.
- El servidor debe negociar una conexión segura con el navegador.
- El contenido se carga como de costumbre.
Si bien los redireccionamientos funcionan correctamente, es posible que estén mal configurados de modo que sigan permitiendo el acceso a la versión no segura de un sitio. Incluso si todo está configurado correctamente, sigue existiendo un problema de seguridad, ya que el usuario se seguirá conectando 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 al HSTS
El encabezado de respuesta HTTP Strict-Transport-Security
determina la función HSTS para las solicitudes HTTPS. Si la estableces, las visitas de retorno a un sitio web activarán un redireccionamiento especial conocido como "redireccionamiento interno 307", que ocurre 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 y, por lo tanto, es más segura. Como ventaja adicional, estos tipos de redireccionamiento son extremadamente rápidos, por lo que se elimina cualquier latencia notable durante un salto HTTP a HTTPS.
![Un redireccionamiento interno 307 de HTTP a HTTPS, activado por un encabezado HSTS. El redireccionamiento 307 solo tarda 2 milisegundos.](https://web.developers.google.cn/static/blog/bbc-hsts/image/a-307-internal-redirect-cd7d384b0a833.png?authuser=0000&hl=es)
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 el tiempo de vigencia de la política:
Strict-Transport-Security: max-age=3600
En el ejemplo anterior, la política solo debería tener efecto durante una hora.
Implementa HSTS
El principal inconveniente de implementar HSTS es que no puedes tratar tu origen como estrictamente seguro. Supongamos que administras recursos con varios subdominios, pero es posible que no todos sean seguros. En esta situación, un encabezado HSTS podría dañar tu sitio web.
La BBC adoptó el enfoque correcto para implementar HSTS. Como Neil Craig mencionó en su tweet, el valor inicial que se estableció para bbc.com fue max-age=10
.
Este enfoque significa que la política solo estuvo vigente inicialmente durante diez segundos. Esto no proporciona muchos beneficios, pero la idea es evaluar 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. En el momento en que se redacta este documento, bbc.com especifica una política de HSTS de max-age=86400
, y es casi seguro que aumentará con el tiempo.
No querrás salir de tu puerta con un valor de max-age
largo cuando implementes HSTS. Podrías tener que intentar solucionar problemas de repente mientras los usuarios los experimentan. Comienza de a poco y auméntalos 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 complete el lanzamiento.
Navega al principio de forma más segura y rápida con la lista de precarga de HSTS
Una política de HSTS solo entra en vigencia después de la primera visita al sitio web, por lo que no habrá beneficios durante la primera visita. Esto requerirá que el redireccionamiento no sea 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 el redireccionamiento de HTTP a HTTPS será instantáneo.
Pruébalo
Si la BBC se siente cómoda probando HSTS, es muy probable que puedas hacer lo mismo en tu sitio web. Prueba tu sitio web y, si quieres mejorar la velocidad, agrégalo a la lista de precarga de HSTS cuando tengas la certeza de que no hay errores para brindar a tus usuarios una experiencia y más rápida.