1. O que é a Content Security Policy (CSP)?
A Content Security Policy (CSP) é um cabeçalho HTTP padronizado pelo W3C que permite declarar origens aprovadas de conteúdo que o navegador pode carregar e executar.
Ao limitar de onde scripts, estilos e conexões podem surgir, a CSP atua como a principal linha de defesa contra ataques de Cross-Site Scripting (XSS) e vazamento de dados.
2. Principais Diretivas e Padrões Seguros
| DIRETIVA | CONTROLA | PADRÃO SEGURO |
|---|---|---|
| default-src | Fallback para todas as diretivas não especificadas | 'self' |
| script-src | Fontes autorizadas de execução JavaScript | 'self' 'nonce-...' |
| style-src | Origens de folhas de estilo e CSS inline | 'self' 'unsafe-inline' |
| connect-src | Destinos permitidos para Fetch, XHR e WebSocket | 'self' https://api.domain.com |
| frame-ancestors | Domínios autorizados a incorporar esta página em <iframe> | 'none' |
3. Políticas Baseadas em Nonce vs Hash
Versões legadas dependiam de listas brancas de domínios (ex.: script-src https://cdn.exemplo.com). No entanto, redirecionamentos abertos em CDNs frequentemente burlavam essa proteção.
A CSP Estrita (Nível 3) resolve isso exigindo nonces criptográficos únicos por requisição:
4. Frame Ancestors vs X-Frame-Options
Embora o cabeçalho X-Frame-Options: DENY ainda seja suportado, a diretiva frame-ancestors da CSP é o padrão moderno por oferecer controle granular sobre quais origens podem enquadrar sua aplicação.