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; preloadX-Frame-Options
Previne que sua página seja carregada em iframes, protegendo contra clickjacking.
X-Frame-Options: DENYX-Content-Type-Options
Impede o navegador de adivinhar o MIME type do conteúdo, evitando ataques de MIME sniffing.
X-Content-Type-Options: nosniffReferrer-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-originPermissions-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