HSTS (segurança estrita de transporte HTTP)

E-mail e segurança
Um cabeçalho de segurança que força os navegadores a se conectarem apenas a um site por HTTPS, evitando ataques de downgrade.
← Voltar ao Glossário

O que é HSTS?

HSTS (HTTP Strict Transport Security) é um mecanismo de segurança web que diz aos navegadores interagir apenas com um site sobre HTTPS, nunca HTTP. Uma vez que um navegador vê um header HSTS, ele automaticamente fará upgrade de todas as requisições futuras para HTTPS e se recusará a se conectar sobre HTTP simples, mesmo se o usuário explicitamente digitar http://.

Por que HSTS é Importante

Mesmo com um certificado SSL válido, vulnerabilidades existem:

Ataque de SSL Stripping

1. Usuário digita "example.com" (sem https://)

2. Atacante intercepta a requisição HTTP inicial

3. Atacante proxy para HTTPS, apresenta HTTP para usuário

4. Usuário pensa que está seguro, mas atacante vê tudo

HSTS previne isto garantindo que navegadores nunca façam aquela requisição HTTP inicial.

Benefícios de HSTS

Sintaxe de Header HSTS

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Diretivas

DiretivaDescrição
max-ageSegundos para lembrar HSTS (31536000 = 1 ano)
includeSubDomainsAplicar HSTS a todos os subdomínios
preloadConsentimento para inclusão em lista de pré-carregamento do navegador

Implementando HSTS

Nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Apache

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Cloudflare

Habilitar em SSL/TLS → Certificados de Borda → HTTP Strict Transport Security

Express.js

const helmet = require('helmet');

app.use(helmet.hsts({

maxAge: 31536000,

includeSubDomains: true,

preload: true

}));

Lista de Pré-carregamento HSTS

A lista de pré-carregamento HSTS é uma lista de domínios hardcoded nos navegadores que devem ser acessados apenas sobre HTTPS. Isto elimina mesmo a vulnerabilidade de primeira requisição HTTP.

Requisitos de Pré-carregamento

1. Certificado SSL válido

2. Redirecionar todo HTTP para HTTPS

3. Header HSTS com:

- max-age pelo menos 31536000 (1 ano)

- Diretiva includeSubDomains

- Diretiva preload

4. Todos os subdomínios devem suportar HTTPS

Submetendo à Lista de Pré-carregamento

1. Verificar requisitos: Use hstspreload.org para verificar

2. Submeter domínio: Digitar domínio em hstspreload.org

3. Aguardar inclusão: Leva semanas a meses para atualizações de navegador

Avisos de Pré-carregamento

Pré-carregamento é permanente (praticamente). Remover da lista leva meses e exige atualizações de navegador. Apenas pré-carregue se você tiver certeza de que todos os subdomínios suportarão HTTPS indefinidamente.

Verificando HSTS

DevTools do Navegador:

1. Abrir DevTools → Aba Network

2. Carregar o site

3. Verificar Response Headers para Strict-Transport-Security

Usando curl:
curl -I https://example.com | grep -i strict
Usando DomScan:
curl "https://domscan.net/v1/health?domain=example.com"

# Relata hasHSTS em detalhes de segurança

Status de Pré-carregamento:

Verificar hstspreload.org para ver se um domínio é pré-carregado.

Estratégia de Desdobramento HSTS

Fase 1: max-age Curto

Comece com um max-age curto para testar:

Strict-Transport-Security: max-age=300

Se algo quebra, usuários apenas cachearam por 5 minutos.

Fase 2: Aumentar Duração

Depois de confirmar que HTTPS funciona em todos os lugares:

Strict-Transport-Security: max-age=86400

Fase 3: Adicionar Subdomínios

Uma vez que todos os subdomínios suportam HTTPS:

Strict-Transport-Security: max-age=2592000; includeSubDomains

Fase 4: Desdobramento Completo + Pré-carregamento

Depois de meses de operação estável:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Depois submeta à lista de pré-carregamento.

Problemas Comuns com HSTS

Subdomínio sem HTTPS: includeSubDomains quebra aquele subdomínio Ambientes de Desenvolvimento: HSTS cacheado de produção quebra dev local Headers de CDN/Proxy: Garanta que header HSTS não seja descartado por intermediários Conteúdo Misto: Todos os recursos devem ser HTTPS; HSTS não corrige recursos HTTP embutidos

HSTS é essencial para qualquer site manipulando dados sensíveis e fortemente recomendado para todos os sites HTTPS.

Coloque este Conhecimento em Prática

Use a API DomScan para verificar disponibilidade de domínio, saúde e muito mais.