Guia completo de Security Headers para aplicações web
Security headers são a primeira linha de defesa da sua aplicação web. Aprenda quais headers configurar, o que cada um faz e como implementar corretamente.
O que são Security Headers
Security headers são instruções HTTP enviadas pelo servidor que dizem ao navegador como se comportar ao processar o conteúdo da página. Eles protegem contra uma ampla gama de ataques: XSS, clickjacking, sniffing de MIME type, man-in-the-middle e muitos outros.
A maioria dos security headers pode ser configurada em minutos e não requer alteração de código da aplicação — basta configurar no servidor web ou no framework.
Headers essenciais
Content-Security-Policy (CSP)
O header mais importante. Define quais origens de conteúdo são permitidas na página — scripts, estilos, imagens, fontes, iframes, etc. É a defesa mais eficaz contra XSS.
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://api.example.com; font-src 'self' https://fonts.gstatic.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self';
Dica: comece com Content-Security-Policy-Report-Only para monitorar violações sem bloquear conteúdo. Quando estiver estável, mude para modo de enforcement.
Strict-Transport-Security (HSTS)
Força o navegador a usar HTTPS exclusivamente, prevenindo ataques de downgrade e interceptação de tráfego.
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
X-Frame-Options
Previne que sua página seja carregada em iframes, protegendo contra clickjacking.
X-Frame-Options: DENY
X-Content-Type-Options
Impede o navegador de adivinhar o MIME type do conteúdo, evitando ataques de MIME sniffing.
X-Content-Type-Options: nosniff
Referrer-Policy
Controla quais informações de referência são enviadas em requisições. Evita vazamento de URLs internas e tokens em query strings.
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy
Controla quais APIs do navegador sua página pode usar (câmera, microfone, geolocalização, etc.). Bloqueia funcionalidades desnecessárias.
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
Como o SAFETAGGY detecta
Na varredura básica, o SAFETAGGY verifica mais de 10 security headers, analisando presença, valor e configuração de cada um:
- Content-Security-Policy (presença e qualidade das diretivas)
- Strict-Transport-Security (max-age, includeSubDomains, preload)
- X-Frame-Options (DENY ou SAMEORIGIN)
- X-Content-Type-Options (nosniff)
- Referrer-Policy (valor adequado)
- Permissions-Policy (APIs desnecessárias bloqueadas)
- Cache-Control (dados sensíveis não cacheados)
- Cross-Origin-Resource-Policy
- Cross-Origin-Opener-Policy
- Cross-Origin-Embedder-Policy
Para contornar caches de CDN, o scanner faz 3 probes diferentes (GET normal, cache-busting, POST) e considera o header presente se encontrado em qualquer um.
Como implementar
1. Next.js
// next.config.js
const securityHeaders = [
{ key: 'X-Frame-Options', value: 'DENY' },
{ key: 'X-Content-Type-Options', value: 'nosniff' },
{ key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
{ key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
{ key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubDomains; preload' },
{ key: 'Content-Security-Policy', value: "default-src 'self'; script-src 'self'" },
];
module.exports = {
async headers() {
return [{ source: '/(.*)', headers: securityHeaders }];
},
};2. Nginx
# /etc/nginx/conf.d/security-headers.conf add_header X-Frame-Options "DENY" 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 Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self'" always; add_header Cross-Origin-Resource-Policy "same-origin" always;
3. Apache (.htaccess)
<IfModule mod_headers.c> Header set X-Frame-Options "DENY" Header set X-Content-Type-Options "nosniff" Header set Referrer-Policy "strict-origin-when-cross-origin" Header set Permissions-Policy "camera=(), microphone=(), geolocation=()" Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header set Content-Security-Policy "default-src 'self'; script-src 'self'" </IfModule>
Checklist de security headers
| Header | Prioridade | Protege contra |
|---|---|---|
| Content-Security-Policy | Crítica | XSS, injeção de código |
| Strict-Transport-Security | Crítica | Man-in-the-middle, downgrade |
| X-Frame-Options | Alta | Clickjacking |
| X-Content-Type-Options | Alta | MIME sniffing |
| Referrer-Policy | Média | Vazamento de URLs |
| Permissions-Policy | Média | Abuso de APIs do navegador |
Teste seu site agora
O SAFETAGGY verifica automaticamente todos os security headers da sua aplicação e indica exatamente o que está faltando. Resultado em menos de 60 segundos.
Fazer varredura gratuita