HSTS explicado: max-age, preload e o que quebra
Atualizado em 2026-11-03 · 6 min de leitura
HSTS é o único cabeçalho de segurança capaz de tornar um site inacessível — inclusive para o próprio dono. E também é exigido para um A+. A distância entre esses dois fatos depende inteiramente da disciplina na implantação.
O que o cabeçalho realmente faz
Strict-Transport-Security diz ao navegador que este host só pode ser contatado via HTTPS pelos próximos N segundos. Uma vez recebido, o navegador reescreve links http:// internos, bloqueia o clique de contorno de erro de certificado e recusa HTTP puro — antes que qualquer requisição saia da máquina.
É por isso que ele defende contra ataques de downgrade que um redirecionamento não consegue: o redirecionamento ainda envia a primeira requisição em texto claro, e é exatamente essa a requisição que um atacante na rede quer interceptar.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age é uma contagem regressiva que você não pode cancelar
O max-age fica no cliente. Se você servir um ano e depois remover o cabeçalho, todo navegador que já o viu continua forçando HTTPS por até um ano. Não existe interruptor no servidor para desligar.
O CertH trata 180 dias (15552000 segundos) como o limite para A+. Um ano é o valor habitual em produção. Abaixo de 180 dias o HSTS ainda conta como ativo no resumo, mas não libera o A+.
includeSubDomains e preload são decisões separadas
includeSubDomains estende a regra a todos os subdomínios. Se algum subdomínio só fala HTTP — uma ferramenta interna, um painel administrativo legado, um host de staging —, ele fica inacessível para quem visitou o domínio pai. Audite o DNS primeiro.
O preload vai além: o domínio é embutido em uma lista distribuída com os navegadores, então a regra vale já na primeira visita, antes de qualquer cabeçalho ser visto. Remover leva meses e exige envio à lista de remoção. Não adicione preload antes de o cabeçalho estar estável por alguns meses.
- •Sirva o cabeçalho em toda resposta HTTPS, incluindo páginas de erro — um 404 sem ele não ensina nada ao navegador.
- •Nunca envie HSTS por HTTP puro; navegadores ignoram por especificação, então um loop de redirecionamento mal configurado não se conserta por aqui.
- •Verifique subdomínios com serviços só HTTP antes de adicionar includeSubDomains.
- •Adicione preload por último, e só depois que o max-age estiver em um ano por um tempo.
Uma implantação que não quebra nada
Comece com um max-age curto para que um erro expire rápido: max-age=300. Mantenha por uma semana e observe subdomínios quebrados e relatórios de conteúdo misto. Depois vá para um dia, então um mês, então um ano. Cada passo é reversível dentro da janela anterior, e é exatamente esse o sentido de começar curto.
Se algo quebrar, a correção é servir HTTPS corretamente no host afetado — não remover o cabeçalho, o que não ajuda mais ninguém que já o recebeu.
FAQ
A ausência de HSTS baixa minha pontuação?
Não desconta da pontuação base, mas bloqueia o A+: a nota máxima exige HSTS com pelo menos 180 dias de max-age ou preload. Um site pode fazer 100 e continuar sendo A sem ele.
Posso usar HSTS sem possuir todos os subdomínios?
Sim, desde que omita includeSubDomains. O cabeçalho então se aplica apenas ao host exato que o serviu.