Desenvolvimento

Checklist de Cabeçalhos de Segurança HTTP (com Configurações Prontas)

Alguns cabeçalhos de resposta bloqueiam classes inteiras de ataques, como clickjacking, MIME sniffing, downgrade de protocolo e boa parte do XSS, com quase nenhum custo. Aqui estão os cabeçalhos que vale a pena enviar, valores iniciais seguros e como implantar o mais complicado (CSP) sem quebrar seu site.

Intermediário · 8 min de leitura · Atualizado em 30 de outubro de 2026

Checklist de Cabeçalhos de Segurança HTTP (com Configurações Prontas)

O checklist

CabeçalhoValor seguroProtege contra
Strict-Transport-Securitymax-age=31536000; includeSubDomainsDowngrade para HTTP e roubo de cookies em Wi-Fi público
Content-Security-PolicyComece em modo report-only (veja abaixo)XSS, scripts injetados, exfiltração de dados
X-Content-Type-OptionsnosniffNavegadores executando uploads como scripts
CSP frame-ancestors'self' (ou X-Frame-Options: SAMEORIGIN)Clickjacking
Referrer-Policystrict-origin-when-cross-originVazamento de URLs completas (tokens, IDs) para outros sites
Permissions-Policycamera=(), microphone=(), geolocation=()Scripts de terceiros usando recursos do dispositivo

Veja quais desses cabeçalhos seu site envia hoje, com nota, no Security Headers Checker.

HSTS: comece com um prazo curto

Assim que um navegador recebe o HSTS, ele recusa HTTP simples durante todo o max-age. Antes de tudo, garanta que todos os subdomínios funcionem em HTTPS (verifique os certificados com o SSL Checker), comece com max-age=300 e depois aumente para um ano. Adicione preload e envie para a lista de preload do HSTS somente quando tiver certeza, porque a remoção leva meses.

Content-Security-Policy sem quebrar nada

A CSP define de onde scripts, estilos, imagens e conexões podem vir. Implante em modo report-only, que registra as violações sem bloquear nada:

Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self' https://www.googletagmanager.com; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; report-uri /csp-report

Acompanhe o console do navegador e seu endpoint de relatórios por uma semana, adicione as origens que você realmente usa e depois troque o nome do cabeçalho para Content-Security-Policy. Evite 'unsafe-inline' em scripts; use nonces ou hashes para os scripts inline que você controla. Monte a política origem por origem com o CSP Generator.

Configurações

Nginx (dentro de server; always mantém os cabeçalhos também nas páginas de erro):

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Content-Security-Policy "frame-ancestors 'self'" always;

Apache (.htaccess, com mod_headers):

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"

Vercel (vercel.json):

{ "headers": [ { "source": "/(.*)", "headers": [
  { "key": "Strict-Transport-Security", "value": "max-age=31536000; includeSubDomains" },
  { "key": "X-Content-Type-Options", "value": "nosniff" },
  { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" }
] } ] }

Gere configurações completas de servidor com o Nginx Config Generator ou o .htaccess Generator.

Cabeçalhos que você pode descartar

X-XSS-Protection está obsoleto: os navegadores modernos removeram o filtro que ele controlava, e 0 é o valor recomendado caso você ainda o envie. Expect-CT foi descontinuado. Ocultar Server e X-Powered-By é uma boa prática de higiene, mas não é proteção real.

Perguntas frequentes

Quais cabeçalhos de segurança são mais importantes?
Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options: nosniff e frame-ancestors (ou X-Frame-Options). Referrer-Policy e Permissions-Policy são ganhos rápidos.
Um Content-Security-Policy pode quebrar meu site?
Pode, se você aplicá-lo imediatamente. Comece com Content-Security-Policy-Report-Only, corrija o que ele reportar e só então aplique a política.
O X-Frame-Options ainda é necessário?
Em navegadores modernos, o frame-ancestors da CSP o substitui. Enviar os dois não tem problema para navegadores mais antigos.

Continue lendo