Verificação de cabeçalhos de segurança

Cole os cabeçalhos de resposta de uma página —curl -sI https://your-site.example/num terminal, ou o bloco do painel Rede do navegador — e obtenha umaClassificação de A+ a Fna lista de verificação de cabeçalhos seguros da OWASP:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, proteção contra enquadramento,Referrer-Policy, Permissions-Policy, o trio de isolamento cross-origin, fugas de versão, cabeçalhos obsoletos e indicadores de cookies — cada conclusão emparelhada com o excerto exatonginx, Apache e Expresslinhas que o corrigem. Tudo corre no seu navegador; a página nunca contacta o seu site.
A linha de estado é opcional. Todas as linhas Set-Cookie múltiplas são verificadas. Para ter uma política para classificar, crie uma no gerador de CSP; para desmontar um bloco de cabeçalhos linha a linha, use o analisador de cabeçalhos HTTP.
Ainda sem classificação. Cole os cabeçalhos de resposta e carregue em Verificar cabeçalhos, ou carregue um exemplo.
As linhas de correção para cada conclusão aparecem aqui depois de uma verificação.
Âmbito deste verificador face à Verificação de segurança SSL. Esta página classifica os cabeçalhos de resposta de segurança (a lista OWASP acima). A Verificação de segurança SSL classifica a sua configuração HTTPS: cadeia de certificados, versões de protocolo, força das cifras e conteúdo misto. HSTS e os indicadores de cookies aparecem em ambas as páginas porque ambas as listas os incluem, mas com lentes diferentes — execute as duas verificações para ter a imagem completa.
Autoteste
Volta a executar o classificador contra blocos de cabeçalhos fixos: a amostra boa em A+, a amostra má em F com todas as deduções acionadas, cada regra isolada (a aritmética da pontuação), o limite de fuga de versão, os avisos de cookies, notas de qualidade do CSP, frame-ancestors contando como proteção contra enquadramento, limiares de classificação de ambos os lados de cada fronteira, os excertos de correção, e os caminhos negativos. Nada é enviado para lado nenhum.
O que são cabeçalhos de segurança?
Em resumo: os cabeçalhos de segurança são cabeçalhos de resposta que instruem o navegador a aplicar uma proteção que ele não consegue deduzir sozinho — nunca carregar scripts de origens desconhecidas, nunca voltar a falar HTTP simples com este anfitrião, nunca embutir esta página — e custam uma linha de configuração cada.
Os cabeçalhos que esta página classifica
CabeçalhoProtege contraValor recomendado pela OWASP
Strict-Transport-Securityrebaixamento de protocolo e roubo de cookies no primeiro pedido HTTP simplesmax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, incorporações maliciosas, conteúdo mistodefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-Optionsconfusão de MIME (um script servido como imagem)nosniff
X-Frame-Options / CSP frame-ancestorsclickjacking (a sua página enquadrada por um atacante)deny / 'none'
Referrer-Policyfuga de URLs (com tokens) para sites de terceirosno-referrer
Permissions-Policypáginas e incorporações a usar em silêncio câmara, microfone, localizaçãotodas as funcionalidades desativadas
Cross-Origin-Opener-Policyoutras janelas a alcançar o seu contexto de navegaçãosame-origin
Cross-Origin-Embedder-Policycarregar recursos que não aderiram (permite isolamento de processos)require-corp
Cross-Origin-Resource-Policyos seus recursos incorporados por outros sitessame-origin
Como a classificação é calculada

Comece em 100 e subtraia: −25 CSP em falta, −20 HSTS em falta, −10 cada um para X-Content-Type-Options, Referrer-Policy em falta ou qualquer proteção contra enquadramento, −5 cada para o trio cross-origin e Permissions-Policy, −5 por fugas de versão em Server/X-Powered-By (limitado), e −5 por um X-XSS-Protection diferente de zero. Classificações por letra: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, abaixo = F. As notas consultivas (indicadores de cookies, controlo de cache, qualidade do CSP) não subtraem.

Erros comuns
  • Definir cabeçalhos nas respostas erradas. Acrescente-os a todas as respostas, incluindo páginas de erro e redirecionamentos — é para isso que serve o always em add_header ... always; (nginx) e Header always set (Apache).
  • Testar apenas a página inicial. Proxies, caches e aplicações antigas costumam remover ou substituir cabeçalhos apenas em alguns caminhos. Verifique as páginas que importam: login, checkout, endpoints de API.
  • Manter o X-XSS-Protection. O auditor que ele acionava causava vulnerabilidades próprias; os navegadores removeram-no. Um valor diferente de zero custa agora pontuação de propósito — remova-o e deixe o CSP fazer o trabalho.
  • Acreditar que o X-Frame-Options está atualizado. Não consegue permitir origens específicas e não consta da norma CSP; frame-ancestors é o substituto moderno. Manter ambos durante a transição é aceitável — esta página aceita qualquer um.
  • Publicar banners de versão. Server: Apache/2.4.58 (Unix) estreita a pesquisa de um atacante por bugs conhecidos sem benefício nenhum para si. Remova a versão; mantenha o número de linhas baixo.
FAQ

Porque é que o COOP/COEP/CORP só vale 5 pontos cada? O trio é a camada mais recente, sobretudo necessária onde se quer isolamento de processos (SharedArrayBuffer, endurecimento contra Spectre). Um site sem eles mantém as suas proteções centrais; com eles, algumas incorporações cross-origin precisam de ajustes — por isso pesam menos do que o CSP ou o HSTS.

Uma classificação alta significa que o site é seguro? Não — significa que os cabeçalhos de resposta estão definidos. Os cabeçalhos de segurança são uma camada: a configuração TLS, a gestão de sessões, a validação de entradas e as correções continuam a decidir se o site é de facto seguro. Execute a Verificação de segurança SSL para a camada TLS.

Porque é que o valor do meu Permissions-Policy é tão longo? A base OWASP desativa explicitamente cada funcionalidade, para que um navegador que acrescente novas funcionalidades não as reative em silêncio. Um valor mais curto como camera=(), microphone=(), geolocation=() é um começo — saiba apenas o que deixa ativo.

Posso verificar os cabeçalhos de qualquer site a partir daqui? Esta página nunca faz pedidos de rede — classifica exatamente o texto que cola, por isso funciona atrás de firewalls e em anfitriões internos, e nada do que inspecionar sai da sua máquina. Obter os cabeçalhos é um curl -sI no seu terminal.

E o Clear-Site-Data e o X-Permitted-Cross-Domain-Policies? Úteis em cenários estreitos (respostas de logout; visualizadores antigos de PDF/Flash). Aqui são apenas consultivos, não pontuados — enviar Clear-Site-Data em todas as respostas apagaria o armazenamento dos seus utilizadores a cada carregamento de página.