CSP com nonce elimina unsafe-inline sem bloquear scripts legítimos. Aprenda a gerar nonces por request, aplicar no Slim e depurar violações.
Por que CSP com nonce?
Content Security Policy bloqueia scripts não autorizados, prevenindo XSS mesmo quando o atacante injeta código no HTML. A abordagem com nonce é mais flexível que hash — o valor muda por request, tornando impossível pre-computar um ataque.
Gerando o nonce
O nonce deve ser criptograficamente aleatório e único por request. No PHP:
$nonce = base64_encode(random_bytes(16));
O mesmo nonce é usado no header HTTP e nas tags <script nonce="...">.
strict-dynamic
Com strict-dynamic, scripts com nonce podem carregar outros scripts dinamicamente — sem precisar listá-los explicitamente na política. Isso é essencial para bundlers como Vite que geram imports dinâmicos.
Depurando violações
Antes de enforçar a CSP em produção, use Content-Security-Policy-Report-Only para coletar violações sem bloquear nada. O header report-uri ou report-to envia os relatórios para um endpoint que você controla.
- Nunca use
unsafe-inline— ele anula toda a proteção - Evite
unsafe-eval— bloqueia eval() e Function() construtor - Teste com DevTools → Console → violações de CSP
Publicado em
Segurança WebExplorar por tema