O Que É uma Content Security Policy? Controlando o Que Carrega
Uma content security policy (CSP) é uma allowlist aplicada pelo browser que declara quais fontes de scripts, estilos e outros recursos uma página pode carregar.
Uma content security policy, ou CSP, é uma das defesas mais fortes contra cross-site scripting. Entregue como um header HTTP, ela diz ao browser exatamente quais fontes de código e conteúdo confiar. Qualquer coisa que não esteja na lista, incluindo um script malicioso injetado, é bloqueada. Um CSP bem construído pode neutralizar uma vulnerabilidade XSS que, de outra forma, seria explorável.
Como o CSP funciona
O servidor envia um header Content-Security-Policy listando as fontes permitidas por tipo de recurso: scripts destas origens, estilos daquelas, imagens de outros lugares. O browser aplica a política, recusando-se a carregar ou executar qualquer coisa fora da allowlist.
Contra o que o CSP defende
- Cross-site scripting a partir de scripts inline injetados ou de terceiros.
- Carregamento de recursos de origens inesperadas e não confiáveis.
- Alguns caminhos de exfiltração de dados, ao restringir os alvos de conexão.
Nonces e hashes
Para permitir um script inline específico com segurança, o CSP pode usar um nonce por resposta ou um hash do conteúdo do script. Apenas scripts que carregam o nonce ou hash correspondente rodam, então um atacante que injeta um script sem ele é bloqueado.
Construindo um CSP com cuidado
O CSP deve ser ajustado à aplicação: frouxo demais e oferece pouca proteção, restrito demais e quebra funcionalidades legítimas. Equipes frequentemente começam em modo report-only, coletam violações e então apertam até que a política seja segura e funcional.
CSP em CI/CD
Um CSP é fácil de quebrar acidentalmente ao adicionar um script ou um widget de terceiros. Uma verificação de CI que afirma que o CSP está presente e não afrouxou captura regressões antes do deploy, mantendo a proteção intacta ao longo do tempo.
Parte da defesa em profundidade
O CSP não substitui a sanitização de entrada e a codificação de saída; é um anteparo. Se uma falha de XSS passar, um CSP forte pode impedir que o script injetado seja executado, transformando uma potencial brecha em uma tentativa bloqueada.
Principais conclusões
- Um CSP é uma allowlist, aplicada pelo browser, de fontes confiáveis de scripts e recursos.
- É um forte anteparo contra cross-site scripting, usando nonces ou hashes para scripts inline.
- Ajuste-o com cuidado e verifique-o no CI para que um deploy não possa afrouxá-lo silenciosamente.