Skip to content
Latchkey

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.

Guias relacionados