EIVUS

Content Security Policy (CSP) em sites hospedados

Reduza XSS e injeção com headers CSP; report-only e ajuste.

Voltar ao blog

Headers CSP restringem quais fontes podem carregar script, estilo e outros recursos. Comece em report-only para encontrar violações, depois aplique. Ajuste diretivas para permitir CDNs e scripts inline legítimos. Use nonce ou hash para scripts inline.

O que o CSP faz

  • Diretivas: default-src, script-src, style-src, img-src etc. Cada uma limita de onde o navegador pode carregar aquele tipo de recurso. Reduz XSS e injeção não autorizada.
  • Fontes: Permita origens específicas, 'self', 'none' ou 'unsafe-inline'/'unsafe-eval' (enfraquecem; evite quando possível).
  • Reporting: report-uri ou report-to enviam relatos de violação. Use em report-only para ver o que seria bloqueado antes de aplicar.

Report-only e depois aplicar

  • Report-only: Envie Content-Security-Policy-Report-Only primeiro. Sem bloqueio; você recebe relatos. Corrija uso legítimo de terceiros ou inline (allowlist de CDNs, nonces).
  • Aplicar: Quando as violações estiverem aceitáveis, use Content-Security-Policy. O navegador bloqueará violações. Mantenha report-uri para regressões.
  • Scripts inline: Prefira nonce ou hash em vez de 'unsafe-inline'. Nonce: servidor gera valor aleatório por requisição; tag script tem nonce="…". Reduz superfície de XSS.

Ajuste

  • CDNs: Adicione domínios do CDN a script-src, style-src, img-src conforme necessário.
  • Frameworks: Alguns injetam script/style inline. Use suporte a nonce ou hashes.
  • Rigor: CSP mais restrito é mais seguro mas pode quebrar widgets legados. Equilibre e melhore ao longo do tempo.

Resumo

Headers CSP restringem fontes de script, estilo e outros recursos. Comece em report-only; ajuste para CDNs e inline (nonce/hash); depois aplique. Reduz risco de XSS e injeção.

Clientes que confiam na gente