Content Security Policy (CSP)
Definição
Content Security Policy (CSP) é um mecanismo de segurança oferecido pelos navegadores que permite aos desenvolvedores controlar quais tipos de conteúdo podem ser carregados ou executados em uma página web.
Com CSP, é possível definir políticas claras sobre quais origens de scripts, imagens, estilos, fontes, iframes, entre outros, são permitidas. Seu principal objetivo é prevenir ataques de injeção de código, especialmente XSS (Cross-Site Scripting) — uma das vulnerabilidades mais comuns na web.
As políticas podem ser definidas via cabeçalhos HTTP ou por meio de meta tags HTML.
Objetivos da CSP
- Prevenir execução de scripts maliciosos (XSS e injeção de código).
- Controlar origens externas confiáveis para cada tipo de recurso.
- Mitigar falhas existentes no frontend ao impor restrições adicionais.
- Fornecer um canal de auditoria por meio de relatórios automáticos de violação.
- Aumentar a segurança geral da aplicação Web, mesmo em ambientes inseguros.
Exemplo prático — Política CSP via cabeçalho HTTP
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.exemplo.com; img-src *; object-src 'none'
Essa política define um conjunto de regras para controle de fontes de conteúdo:
default-src 'self'
: todo conteúdo deve, por padrão, ser carregado da mesma origem do site.script-src 'self' https://cdn.exemplo.com
: scripts JavaScript só são permitidos da mesma origem e de um CDN confiável.img-src *
: imagens podem ser carregadas de qualquer origem.object-src 'none'
: bloqueia totalmente conteúdo do tipo<object>
, como Flash.
Também é possível aplicar CSP diretamente no HTML:
<meta http-equiv="Content-Security-Policy" content="default-src 'self';" />
Essa abordagem é útil quando o desenvolvedor não tem acesso à configuração do servidor.
O ciclo da CSP
[Servidor responde com uma política CSP (via cabeçalho ou meta tag)]
↓
[Navegador interpreta as regras antes de carregar qualquer recurso externo]
↓
[Recursos que violam a política são bloqueados]
↓
[Se configurado, o navegador envia relatórios de violação para um endpoint definido]
CSP pode operar em dois modos:
- Enforcement mode: aplica e bloqueia recursos que violam a política.
- Report-only mode: apenas monitora e envia relatórios sem bloquear nada.