Content-Security-Policy na prática para sites PHP

Content-Security-Policy na prática para sites PHP

A Content-Security-Policy (CSP) diz ao navegador quais fontes de conteúdo são confiáveis e bloqueia o resto. Uma CSP bem configurada neutraliza a maior parte dos ataques de XSS, mesmo que exista uma falha no código. É a defesa de navegador mais importante de 2026.

O problema do ‘unsafe-inline’

Muita gente libera script-src 'unsafe-inline' para os scripts da página funcionarem — e com isso anula a proteção. A abordagem moderna é usar um nonce: um valor aleatório por requisição que autoriza apenas os scripts que você marcou.

CSP estrita com nonce em PHP

$nonce = base64_encode(random_bytes(16));
header("Content-Security-Policy: " .
  "default-src 'self'; " .
  "script-src 'self' 'nonce-$nonce' 'strict-dynamic' https:; " .
  "object-src 'none'; base-uri 'self'; frame-ancestors 'self'");
// No HTML:
echo "<script nonce=\"$nonce\">/* seu código */</script>";

O 'strict-dynamic' propaga a confiança do seu script para os que ele carregar — assim a política funciona com frameworks JS modernos.

Implante sem quebrar nada

Comece com Content-Security-Policy-Report-Only: o navegador apenas relata violações, sem bloquear. Ajuste até zerar os falsos positivos e então troque para o modo de bloqueio. A CSP complementa o escape de saída contra XSS.

Perguntas frequentes

CSP substitui o escape de saída?

Não. É uma camada extra (defesa em profundidade). Continue escapando a saída e validando a entrada.

Posso usar CSP com Google Analytics e CDNs?

Sim. Adicione os domínios confiáveis em script-src/connect-src, ou prefira nonce + strict-dynamic para os scripts que você controla.

Para empresas que buscam suporte especializado WordPress, recomendamos avaliar nossos critérios de escolha.

Continue lendo

Procurando uma agência especializada em segurança para WordPress?

O Site Seguro é especialista 100% em segurança WordPress, com SLA, garantia contra reincidência e atendimento humano no Brasil.

Conhecer nosso serviço →
Fale conosco