Guia · 3 min de leitura

Content-Security-Policy sem quebrar o seu site

Um CSP diz ao navegador em quais origens de scripts, estilos e imagens confiar. É a sua melhor defesa contra scripts injetados e skimmers de cartão, e recompensa uma implantação cuidadosa.

Atualizado em · HackGrade

O código e a configuração ficam em inglês.

1. Comece em modo somente relatório

O navegador informa as violações no console, mas não bloqueia nada.

nginx
add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data: https:; script-src 'self'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; base-uri 'self'" always;

2. Navegue pelo site e leia o console

Abra DevTools → Console nas páginas principais (início, um produto, o carrinho e o checkout, o formulário de contato). Cada origem bloqueada aparece ali. Adicione as confiáveis, como https://www.googletagmanager.com ou o seu provedor de pagamento, à diretiva correspondente.

3. Aplique

Quando o console estiver tranquilo, renomeie o cabeçalho para Content-Security-Policy. Mantenha o cabeçalho somente relatório ao lado enquanto testa uma versão mais rígida.

.htaccess
Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; base-uri 'self'"

Dicas para WordPress

  • Muitos temas e plugins usam scripts inline. No começo, você pode precisar de 'unsafe-inline' em script-src. É mais fraco, mas frame-ancestors, object-src e base-uri continuam ajudando.
  • Para uma política rígida, use nonces: o WordPress 5.7+ consegue adicionar atributos a scripts impressos com wp_print_inline_script_tag().
  • Coloque primeiro um CSP rígido no checkout, onde ele mais importa.

Diretivas úteis

  • frame-ancestors 'self': o substituto moderno do X-Frame-Options.
  • upgrade-insecure-requests: troca automaticamente recursos http:// por https://.
  • connect-src: limita para onde os scripts podem enviar dados, o que ajuda contra skimmers.

Fontes

Guias relacionados

Grátis · Na hora · Sem cadastro

Descubra sua nota antes que outra pessoa descubra.

Análise passiva. Nada é atacado sem a sua permissão.

Comece grátis. Planos pagos a partir de US$ 12 por mês, ou um relatório avulso por US$ 29. Ver preços