Como a BBC está lançando o HSTS e melhorias na segurança e no desempenho.

A BBC está lançando o HSTS no site dela para melhorar a segurança e o desempenho. Descubra o que isso significa e como a HSTS pode ajudar você.

A adoção do HTTPS vem aumentando constantemente nos últimos anos. De acordo com o Web Almanac de 2021 do HTTP Archive, cerca de 91% de todas as solicitações para computadores e dispositivos móveis foram atendidas por HTTPS (link em inglês). O HTTPS não veio apenas para ficar, ele é um pré-requisito necessário para usar recursos como o service worker e protocolos modernos, como HTTP/2 e HTTP/3.

Recentemente, Neil Craig, arquiteto técnico líder da BBC, twittou que o HTTP Strict Transport Security (HSTS) está sendo lançado lentamente para o bbc.com. Vamos descobrir o que isso significa para a BBC e o que pode significar para você.

O problema

Os servidores da Web geralmente monitoram solicitações nas portas 80 e 443. A porta 80 é para solicitações HTTP não seguras, enquanto a 443 é para HTTPS seguro. Isso pode criar um problema, porque, quando você insere um endereço na barra de endereço sem o prefixo de protocolo https://, como a maioria dos usuários faz, alguns navegadores direcionam o tráfego para a versão HTTP não segura de um site, por motivos legados (embora nem sempre seja o caso).

Uma forma comum de garantir que os usuários não acessem uma versão não segura de um site é colocar um redirecionamento HTTP para HTTPS em todas as solicitações. Isso funciona, mas inicia a seguinte cadeia de eventos:

  1. O servidor recebe uma solicitação via HTTP.
  2. O servidor emite um redirecionamento para o equivalente em HTTPS do recurso solicitado.
  3. O servidor via HTTPS precisa negociar uma conexão segura com o navegador.
  4. O conteúdo é carregado normalmente.

Embora os redirecionamentos funcionem bem, eles podem ser configurados incorretamente de maneira que ainda permitem o acesso à versão não segura de um site. Mesmo que tudo seja configurado corretamente, ainda há um problema de segurança em que o usuário ainda vai se conectar por HTTP não seguro durante a fase de redirecionamento, o que expõe os usuários à possibilidade de ataques "man-in-the-middle".

Entrar no HSTS

Compatibilidade com navegadores

  • 4
  • 12
  • 4
  • 7

Origem

O HSTS é determinado pelo cabeçalho de resposta HTTP Strict-Transport-Security para solicitações HTTPS. Quando definido, as visitas de retorno a um site acionarão um redirecionamento especial conhecido como "Redirecionamento interno 307", que ocorre quando o navegador lida com a lógica de redirecionamento, e não o servidor. Isso evita que a solicitação seja interceptada, já que nunca sai do navegador, por isso é mais seguro. Como um bônus, esses tipos de redirecionamento são extremamente rápidos, portanto, qualquer latência perceptível durante um salto de HTTP para HTTPS é eliminada.

Um redirecionamento interno 307 de HTTP para HTTPS, acionado por um cabeçalho HSTS. O redirecionamento 307 leva apenas dois milissegundos.

De forma semelhante na sintaxe à diretiva max-age de Cache-Control, um cabeçalho HSTS especifica uma diretiva max-age. Essa diretiva usa um valor em segundos que especifica por quanto tempo a política será eficaz:

Strict-Transport-Security: max-age=3600

No exemplo acima, a política deve entrar em vigor apenas por uma hora.

Como implantar HSTS

A principal desvantagem da implantação do HSTS é que você não quer tratar sua origem como estritamente segura. Vamos supor que você tenha vários subdomínios dos quais exibe recursos, mas talvez nem todos sejam seguros. Nesse cenário, um cabeçalho HSTS pode corromper seu site.

A BBC adotou a abordagem certa para implantar o HSTS. Como Neil Craig mencionou no tweet, o valor inicial definido para bbc.com era max-age=10.

Essa abordagem significa que a política só foi inicialmente eficaz por dez segundos. Isso não oferece muitos benefícios, mas a ideia é descobrir se há algum problema ao aplicar o HSTS. Com o passar do tempo, você pode aumentar a política gradualmente e ver se há problemas. No momento em que este artigo foi escrito, bbc.com estava especificando uma política HSTS de max-age=86400, e isso provavelmente aumentará com o tempo.

Com certeza não convém ter um valor max-age longo ao implantar o HSTS. De repente, você pode ter dificuldades para corrigir problemas enquanto os usuários enfrentam problemas. Comece aos poucos e aumente com o tempo! Quando você tiver certeza de que tudo está bem, será possível definir a diretiva max-age para um período muito mais longo. Recomendamos definir o max-age como um ou dois anos quando o lançamento estiver completo.

Navegação inicial mais segura e rápida com a lista de pré-carregamento do HSTS

Uma política de HSTS só entra em vigor após a primeira visita a um site, ou seja, os benefícios não estão presentes para a primeira visita. Isso ainda exigirá o redirecionamento não seguro. No entanto, é possível pré-carregar a política de HSTS enviando seu site para a lista de pré-carregamento de HSTS (em inglês), que é uma lista fixada no código de sites que o navegador sabe que são estritamente HTTPS. Quando seu site está na lista de pré-carregamento, a primeira visita também é protegida, e a latência de redirecionamento de HTTP para HTTPS via HSTS será instantânea.

Faça um teste

Se a BBC testar o HSTS, é uma boa chance de você fazer o mesmo com seu site. Teste seu site e, se quiser acelerá-lo, adicione-o à lista de pré-carregamento do HSTS quando tiver certeza de que não há bugs para oferecer aos usuários uma experiência mais segura e rápida.