Protocolos de texto simples, como HTTP, podem ser vulneráveis a ataques de escuta, em que um invasor consegue ler o conteúdo transmitido. O Transport Layer Security (TLS) pode criptografar o tráfego e dificultar muito o uso desses dados por invasores, caso sejam capturados.
No entanto, é possível que invasores evitem o TLS forçando conexões criptografadas a usar HTTP de texto simples. Para resolver esse problema, use o cabeçalho de resposta do HTTP Strict Transport Security (HSTS). O HSTS força o navegador do usuário a acessar um site usando TLS e não permite que ele volte para HTTP em texto simples por um determinado período.
Como a auditoria do Lighthouse falha
A auditoria sinaliza os seguintes problemas com o cabeçalho HSTS:
- Se nenhum cabeçalho HSTS for encontrado.
- Se uma das diretivas recomendadas estiver faltando (
max-age,includeSubDomains,preload) - Se a duração da diretiva
max-agefor inferior a um ano (31.536.000 segundos). - Se houver um erro de sintaxe ao analisar o cabeçalho, como uma diretiva desconhecida.
Configurar uma política HSTS forte
A configuração ideal do cabeçalho HSTS é esta:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
- A diretiva
max-ageespecifica a quantidade de tempo (em segundos) que o navegador do usuário é forçado a visitar um site usando apenas TLS. Depois que o tempo expirar, os usuários poderão acessar o site novamente com HTTP simples se não houver um cabeçalho HSTS fornecido pelo site (ou redirecionamentos temporários de HTTP para HTTPS). - A definição da diretiva
includeSubDomainsimpõe o cabeçalho em qualquer subdomínio do URL da página que envia o cabeçalho inicialmente. Por exemplo, ter um cabeçalho HSTS enviado porgoogle.comque inclua a diretivaincludeSubDomainsvai forçar o cabeçalho HSTS emmail.google.com. - Definir a diretiva
preloade enviar o domínio para o serviço de pré-carregamento de HSTS vai compilar o domínio em binários do navegador que usam a lista de HSTS pré-carregada. Isso vale para mais do que o Google Chrome.
Há alguns riscos ao implantar o cabeçalho HSTS. Todos os recursos que exigem
uma conexão HTTP não criptografada serão interrompidos durante o período definido na
diretiva max-age. Potencialmente ainda mais longo se a diretiva preload
for aplicada.
Para reduzir os riscos associados ao lançamento, recomendamos uma abordagem gradual:
Comece com um pequeno
max-agee adicione apenasincludeSubDomains(sempreload):max-age=3600; includeSubDomainsApós um período de espera (como uma semana) sem problemas relatados, aumente o
max-age. Exemplo:max-age=604800; includeSubDomainsSe essa fase inicial for bem-sucedida por um período prolongado (como três meses), o site e os subdomínios dele deverão ser adicionados à lista de pré-carregamento do HSTS, e a diretiva
preloaddeverá ser incluída.max-age=63072000; includeSubDomains; preload