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.

Verifique os headers do seu site agora.

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

HeaderPrioridadeProtege contra
Content-Security-PolicyCríticaXSS, injeção de código
Strict-Transport-SecurityCríticaMan-in-the-middle, downgrade
X-Frame-OptionsAltaClickjacking
X-Content-Type-OptionsAltaMIME sniffing
Referrer-PolicyMédiaVazamento de URLs
Permissions-PolicyMédiaAbuso 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