Headers de segurança HTTP: proteja o seu site em poucos minutos
Os headers de segurança são instruções que o servidor envia junto com cada página dizendo ao navegador como se proteger: quais scripts podem rodar, se o site pode ser aberto dentro de um iframe, se a conexão deve ser sempre HTTPS, quais recursos do aparelho (câmera, microfone, localização) podem ser usados e o que é compartilhado ao clicar em um link externo. Eles reduzem o impacto de ataques como XSS (injeção de scripts), clickjacking e interceptação de tráfego. Este gerador monta a configuração pronta para Cloudflare Pages, Netlify, Vercel, Nginx, Apache e Node.js.
Os headers e o que cada um faz
| Header | Protege contra | Valor sugerido |
|---|---|---|
| Content-Security-Policy | XSS, scripts e conteúdos de origens não autorizadas | Lista de origens permitidas por tipo de recurso |
| Strict-Transport-Security | Ataques de rebaixamento para HTTP e interceptação | max-age=31536000 |
| X-Content-Type-Options | Navegador "adivinhar" o tipo de um arquivo e executá-lo | nosniff |
| X-Frame-Options / frame-ancestors | Clickjacking (seu site dentro de um iframe malicioso) | SAMEORIGIN |
| Referrer-Policy | Vazamento de URLs internas para outros sites | strict-origin-when-cross-origin |
| Permissions-Policy | Uso indevido de câmera, microfone, localização etc. | camera=(), microphone=()… |
| Cross-Origin-Opener-Policy | Ataques entre janelas (como Spectre e tabnabbing) | same-origin-allow-popups |
Content-Security-Policy (CSP) sem quebrar o site
A CSP é o header mais poderoso e o que exige mais cuidado: se uma origem usada pelo site não estiver na lista, o recurso é bloqueado. Por isso:
- Comece por um dos pontos de partida: Básico (tudo do próprio domínio), Com Google Analytics, AdSense e Google Fonts ou Estrito com nonce.
- Ative o modo Report-Only: o navegador apenas registra no console o que seria bloqueado.
- Navegue pelo site, ajuste as diretivas e, quando o console estiver limpo, desative o Report-Only.
A abordagem mais robusta é a CSP estrita, com 'nonce-…' ou hashes e 'strict-dynamic': só executam os scripts que o servidor marcou, e os scripts carregados por eles. Ela exige que o servidor gere um nonce aleatório a cada resposta. Em sites estáticos, a alternativa é usar hashes SHA-256 dos scripts inline.
HSTS e a lista de preload
O HSTS faz o navegador usar HTTPS sempre, mesmo que alguém digite http://. Comece com uma duração curta, confirme que todo o site (e os subdomínios, se marcar includeSubDomains) funciona em HTTPS e depois aumente para um ano ou mais. A opção preload permite inscrever o domínio na lista embutida nos navegadores, o que protege até o primeiro acesso, mas é difícil de desfazer.
Como aplicar em cada plataforma
- Cloudflare Pages e Netlify: crie um arquivo
_headersna pasta publicada (por exemplo,public/) com o conteúdo gerado. - Vercel: adicione o bloco
headersaovercel.json. - Nginx: inclua as linhas no bloco
server; oalwaysgarante o envio também em páginas de erro. - Apache: use o
.htaccess(com o módulomod_headersativo) ou a configuração do VirtualHost. - Node.js: o middleware gerado funciona no Express e pode ser adaptado ao
httpnativo.
Depois de publicar, confira os headers nas ferramentas do desenvolvedor do navegador (aba Rede, cabeçalhos da resposta) ou com curl -I https://seusite.com.br.
Também está ajustando o SEO? Veja o gerador de meta tags. Para criar segredos e chaves, use o gerador de senhas.