Gerador de CSP
Defesa Cibernética Corporativa•RFC 3986 e W3C CSP3

Gerador de CSP & Content Security Policy

Gere cabeçalhos Content Security Policy (CSP) seguros instantaneamente. Configure script-src, style-src, nonces e hashes para mitigar ataques XSS e corrigir erros de CSP.

100
Pontuação OWASPGrau A+ Blindado
Perfis Predefinidos:
1
Ingestão de Diretivas AST
16 Diretivas e Tokenizador de Tags
2
Nonce Criptográfico e Web Crypto
CSPRNG de 128 bits e SHA-256
3
Auditoria Estática de Evasões OWASP
7 Detectores de Evasão de Alta Gravidade
4
Emissão Multiplataforma
Nginx, Caddy, Next.js e Apache
Parâmetros e Configurações
Regime de Arquitetura de Segurança
Cabeçalho de Aplicação:
Opções Avançadas de SegurançaNível W3C CSP Level 3
Compatibilidade de Níveis W3C CSP
Sintetizador de Nonce CSPRNG e Hashes SHA-256 (Web Crypto)
window.crypto.subtle
Prefixo de NoncedG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg==
Gerador de Hash SHA-256 para Scripts Inline:'sha256-RFWzHiTAeaP0v89upId2U1QGEGNhBlCe/JC9Zdqvqo='
Injetores de Allowlist para Serviços Verificados:
default-srcDiretivas de Busca (Fetch)SEM fallback
Universal fallback boundary for all fetch directives when omitted.
'self'
script-srcDiretivas de Busca (Fetch)herda de default-src
Governs valid sources for JavaScript execution and inline scripts.
'self''strict-dynamic''nonce-dG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg=='https:'unsafe-inline'
style-srcDiretivas de Busca (Fetch)herda de default-src
Governs valid sources for stylesheets, inline styles, and CSS fonts.
'self''unsafe-inline'
img-srcDiretivas de Busca (Fetch)herda de default-src
Governs valid sources of images, SVG vectors, and favicons.
'self'data:https:
connect-srcDiretivas de Busca (Fetch)herda de default-src
Restricts script interfaces: fetch(), XMLHttpRequest, WebSocket, and sendBeacon.
'self'
font-srcDiretivas de Busca (Fetch)herda de default-src
Governs sources for web fonts loaded via @font-face rules.
'self'data:
object-srcDiretivas de Busca (Fetch)herda de default-src
Restricts plugins (<object>, <embed>, <applet>). OWASP mandates 'none'.
'none'
media-srcDiretivas de Busca (Fetch)herda de default-src
Governs valid sources for <audio> and <video> HTML5 media streams.
(Herda de default-src quando vazia)
frame-srcDiretivas de Busca (Fetch)herda de default-src
Governs valid sources for nested browsing contexts (child <iframe> elements).
(Herda de default-src quando vazia)
worker-srcDiretivas de Busca (Fetch)herda de default-src
Restricts Worker, SharedWorker, and ServiceWorker execution origins.
(Herda de default-src quando vazia)
manifest-srcDiretivas de Busca (Fetch)herda de default-src
Governs valid sources of progressive web application (PWA) manifests.
(Herda de default-src quando vazia)
base-uriDiretivas de DocumentoSEM fallback
Restricts URLs in <base> tags. CRITICAL: does NOT inherit from default-src!
'none'
form-actionDiretivas de NavegaçãoSEM fallback
Restricts target submission endpoints for HTML <form> elements.
'self'
frame-ancestorsDiretivas de DocumentoSEM fallback
Clickjacking Armor: restricts parents embedding this site. HTTP header only!
'none'
report-uriReportingSEM fallback
Legacy URI collector endpoint for W3C CSP Level 2 violation reports.
(Explicitamente irrestrita - não recomendado)
report-toReportingSEM fallback
Modern W3C Reporting API endpoint group identifier.
(Explicitamente irrestrita - não recomendado)
Diretivas Ativas: 11Origens Fixadas: 18
Estrito Moderno (Strict Nonce)
Content-Security-Policy: upgrade-insecure-requests; default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-dG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg==' https: 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self'; font-src 'self' data:; object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'; require-trusted-types-for 'script'; trusted-types default dompurify

# Recommended Defense-in-Depth Headers:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: same-origin
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
Cabeçalho: Content-Security-Policy
Processamento 100% em Memória (Sem Upload)
Métrica Principal100Escala de Pontuação
Eficiência / Capacidade11 diretivas18 origens
Saída LíquidaEm Execução (Enforce)

Processamento no Lado do Cliente

Cálculo de alta performance executado integralmente na memória do navegador.

Privacidade Zero Upload no Servidor

Todas as cargas de dados permanecem estritamente locais, sem comunicação com servidores externos.

Exportação Pronta para Produção

Formatos de saída limpos e otimizados, prontos para implantação imediata.

Referência técnica e guia de arquitetura

Gerador de CSP & Content Security Policy — Guia de referência

Gere cabeçalhos Content Security Policy (CSP) seguros instantaneamente. Configure script-src, style-src, nonces e hashes para prevenir ataques XSS e corrigir erros de CSP.

Gerador de CSP & Content Security Policy — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados
Gerador de CSP & Content Security Policy — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados

Parâmetros-chave e controles

default-src (Limite de Fallback para Fetch)lista de origens (fallback de fetch da W3C)

Atua como a diretiva de fallback universal para todas as diretivas de carregamento (script-src, style-src, img-src, connect-src, font-src, object-src, media-src, frame-src, worker-src, manifest-src). Definir 'self' restringe categorias não atribuídas à mesma origem atual, enquanto definir 'none' impõe declarações explícitas obrigatórias em todos os tipos de recursos.

Padrão: 'self' (Fallback Apenas para a Mesma Origem)
script-src & 'strict-dynamic' (Blindagem contra Execução de XSS)lista de origens e expressões de palavras-chave

Controla as origens de execução do JavaScript, prevenindo ataques de cross-site scripting (XSS). No W3C CSP Level 3, combinar um nonce criptográfico ou hash com 'strict-dynamic' instrui navegadores modernos a confiar em scripts criados dinamicamente por scripts raiz autorizados, ignorando automaticamente listas de permissão (allowlists) de hosts legadas e 'unsafe-inline'.

Padrão: 'self' 'strict-dynamic' 'nonce-...' (Política Estrita Moderna)
object-src & base-uri (Defesa contra Plugins e Sequestro de Navegação)lista de origens (integridade do documento)

object-src restringe plugins como Flash, Java e Silverlight; definir 'none' é uma linha de base obrigatória recomendada pela OWASP. base-uri restringe as URLs permitidas em tags HTML <base href>; fundamentalmente, base-uri NÃO herda o fallback de default-src, o que significa que omiti-lo deixa o site vulnerável a injeções de tag <base> que sequestram URLs relativas de scripts.

Padrão: object-src 'none'; base-uri 'none'
frame-ancestors (Proteção contra Clickjacking e UI Redressing)política de enquadramento (exclusivo para cabeçalho de resposta HTTP)

Especifica os ancestrais válidos autorizados a incorporar a página em tags <frame>, <iframe>, <embed> ou <applet>, substituindo o cabeçalho legado X-Frame-Options. Definir 'none' impede que qualquer site enquadre a página (bloqueando ataques de clickjacking), enquanto 'self' autoriza o enquadramento apenas pela mesma origem. Observação: frame-ancestors é ignorado dentro de tags HTML <meta>.

Padrão: 'none' ou 'self' (Blindagem contra Clickjacking)
connect-src (Fronteira de APIs e Prevenção de Exfiltração de Dados)lista de origens de URL (fetch / XHR / WebSocket)

Restringe as URLs de destino que podem ser carregadas usando interfaces de script, incluindo fetch(), XMLHttpRequest, WebSocket (wss://), EventSource e navigator.sendBeacon(). Essencial para mitigar a exfiltração de dados por scripts de terceiros comprometidos que tentam enviar tokens de sessão para servidores externos não autorizados.

Padrão: 'self' (Apenas APIs da Mesma Origem)
upgrade-insecure-requests & report-to (Transporte Seguro e Telemetria)flag de diretiva e grupo de relatórios

upgrade-insecure-requests instrui os navegadores a tratar todas as URLs HTTP como HTTPS antes de requisitá-las, prevenindo avisos de conteúdo misto (mixed content). report-to define o grupo de endpoints da Reporting API para o qual os navegadores enviam relatórios estruturados de violação em JSON, modernizando e substituindo gradualmente a diretiva depreciada report-uri.

Padrão: upgrade-insecure-requests (Ativado)

Dicas profissionais e melhores práticas

'strict-dynamic' Desativa Completamente Listas de Permissão de Hosts no CSP3

Quando 'strict-dynamic' está presente junto a um nonce ou hash em script-src, as especificações W3C CSP Level 3 determinam que os navegadores ignorem automaticamente listas de permissão baseadas em host (como https: ou https://*.google.com) e 'unsafe-inline'. As listas de permissão de domínio permanecem no cabeçalho unicamente como fallback de retrocompatibilidade para navegadores legados (CSP Level 2). Não confie em permissões por domínio para autorizar scripts de terceiros específicos se estiver usando 'strict-dynamic' — o script carregador inicial deve conter o nonce!

A Ausência de base-uri Permite Sequestro de Scripts via Injeção de HTML

Muitos desenvolvedores presumem que definir default-src 'self' protege todo o documento. Contudo, base-uri NÃO herda o fallback de default-src. Se base-uri for omitido, um invasor que encontre uma falha pontual de injeção de HTML (como comentários ou tags markdown sem sanitização) pode injetar <base href='https://evil-attacker.com/'>. O navegador resolverá todos os scripts relativos (como <script src='/static/app.js'>) a partir de evil-attacker.com, contornando completamente sua política script-src 'self'. Sempre declare explicitamente base-uri 'none' ou 'self'.

'unsafe-inline' é Ignorado com Segurança na Presença de Nonce ou Hash no CSP2+

Se você precisa oferecer suporte a navegadores legados que implementam apenas o CSP Level 1 e, ao mesmo tempo, manter segurança máxima em navegadores modernos, pode declarar com segurança: script-src 'nonce-XYZ123' 'unsafe-inline'. De acordo com as especificações W3C CSP Level 2 e Level 3, sempre que um nonce ou hash é fornecido, qualquer navegador moderno ignora 'unsafe-inline' por completo. Isso garante retrocompatibilidade contínua sem comprometer a segurança moderna.

default-src NÃO Protege contra Clickjacking ou Sequestro de Formulários

Um equívoco frequente é acreditar que default-src 'none' bloqueia todos os comportamentos do documento. Na realidade, default-src rege exclusivamente diretivas de requisição (fetch). Ele não tem efeito algum sobre frame-ancestors (que impede que seu site seja incorporado em iframes maliciosos para clickjacking) e nenhum efeito sobre form-action (que restringe para onde os formulários <form> podem enviar credenciais confidenciais). É mandatório declarar frame-ancestors 'none'/'self' e form-action 'self' explicitamente.

Armadilhas comuns e solução de problemas

⚠️Console do navegador exibe: Refused to execute inline script because it violates the following Content Security Policy directive: 'script-src 'self''

Esse erro ocorre porque uma tag <script> inline ou um manipulador de eventos HTML inline (como onclick ou onload) está sendo executado sem autorização. Para corrigir segundo os padrões modernos: (1) Adicione um nonce criptográfico à tag de script (<script nonce='...'>) e declare esse mesmo nonce em script-src 'nonce-...'; (2) Como alternativa, calcule o hash SHA-256 do conteúdo exato do script e adicione 'sha256-...' a script-src; ou (3) Refatore manipuladores inline para arquivos JavaScript externos vinculados via addEventListener.

⚠️Chamada de API falha com: Refused to connect to 'https://api.example.com' because it violates connect-src

Navegadores modernos restringem chamadas fetch(), XMLHttpRequest, WebSocket (wss://) e sendBeacon a origens declaradas em connect-src. Se connect-src não for declarado explicitamente, o navegador recorre ao fallback default-src. Se o seu frontend se comunica com um backend separado ou serviço de terceiros (como Stripe, Sentry ou um gateway de API externo), adicione a origem exata (por exemplo: connect-src 'self' https://api.example.com https://api.stripe.com) à configuração da sua CSP.

⚠️Hash SHA-256 declarado em script-src ainda falha com erro de violação de CSP no Google Chrome ou Firefox

O cálculo de hash de script para CSP é exato ao nível de bits. Uma única quebra de linha extra, retorno de carro (\r\n versus \n) ou caractere de espaço em branco divergente entre o hash calculado e o conteúdo do script inline provocará uma incompatibilidade criptográfica. Além disso, não inclua as tags de abertura <script> ou fechamento </script> ao calcular o hash — calcule o hash exclusivamente do código de texto interno. Certifique-se de que o template do servidor não reformate nem minifique o script inline após a geração do digest.

⚠️A diretiva frame-ancestors parece ser ignorada quando declarada em uma tag HTML <meta>

De acordo com a especificação W3C Content Security Policy, as diretivas frame-ancestors, report-uri e report-to são expressamente proibidas e ignoradas dentro de elementos HTML <meta http-equiv='Content-Security-Policy'>. Para prevenir clickjacking e configurar frame-ancestors de forma eficaz, a política DEVE ser enviada como um cabeçalho de resposta HTTP autêntico pelo seu servidor web (por exemplo, via add_header no Nginx, Header set no Apache ou middleware do Next.js).

Perguntas frequentes (FAQ)

Como criar uma Content Security Policy para barrar ataques XSS?▼

Para bloquear ataques de Cross-Site Scripting (XSS), implemente uma CSP Estrita (Strict CSP) utilizando nonces criptográficos ou hashes juntamente com 'strict-dynamic' e object-src 'none'. Um cabeçalho inicial robusto é: Content-Security-Policy: default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-RANDOM_BASE64' 'unsafe-inline'; object-src 'none'; base-uri 'none'; frame-ancestors 'none';. Essa configuração bloqueia a execução de scripts inline não autorizados, inviabiliza explorações via plugins legados e neutraliza o sequestro de URLs por injeção da tag base.

Qual é a diferença entre default-src e script-src na CSP?▼

default-src é a diretiva de fallback que se aplica a todos os tipos de recursos que não possuem uma diretiva explícita definida (incluindo script-src, style-src, img-src, connect-src e font-src). Já script-src controla especificamente de onde arquivos JavaScript e scripts inline podem ser executados. Quando script-src está presente, ele substitui default-src para todos os recursos de script; se script-src for omitido, o navegador recorre ao fallback default-src.

Por que 'unsafe-inline' é considerado perigoso na Content Security Policy?▼

'unsafe-inline' é perigoso porque autoriza o navegador a executar qualquer JavaScript inline encontrado no documento, inclusive scripts maliciosos injetados por atacantes por meio de vulnerabilidades de XSS armazenado (stored) ou refletido (reflected). Permitir 'unsafe-inline' desativa o principal mecanismo de defesa da CSP contra a execução de scripts, a menos que esteja acompanhado com segurança de um nonce criptográfico ou da diretiva 'strict-dynamic', que fazem os navegadores modernos ignorarem essa palavra-chave.

Como funcionam os nonces de CSP e como são gerados?▼

Um nonce de CSP (número usado uma única vez) é um token aleatório e criptograficamente seguro (tipicamente de 128 bits codificado em Base64), gerado dinamicamente no servidor web a cada requisição HTTP. O servidor injeta esse token no cabeçalho HTTP (script-src 'nonce-abc123xyz') e anexa o atributo correspondente aos scripts inline legítimos (<script nonce='abc123xyz'>). Como invasores não conseguem prever o nonce gerado para aquela requisição específica, scripts injetados são bloqueados antes da execução.

Qual é a diferença entre Content-Security-Policy e Report-Only?▼

Content-Security-Policy aplica a política de forma ativa, bloqueando scripts, conexões e folhas de estilo que violem as regras, enquanto registra as infrações. Já Content-Security-Policy-Report-Only permite que recursos violadores sejam carregados e executados normalmente sem quebrar as funcionalidades da aplicação, enviando relatórios detalhados de violação para os endpoints configurados (report-to / report-uri). O modo Report-Only é o padrão ouro na indústria para auditar aplicações em produção antes da ativação do bloqueio definitivo.

É possível configurar a Content Security Policy via tag meta HTML?▼

Sim, a Content Security Policy pode ser entregue por meio de um elemento HTML <meta http-equiv='Content-Security-Policy' content='...'> dentro da tag <head> do documento. Entretanto, as especificações da W3C proíbem expressamente diretivas de enquadramento e relatório em tags meta; instruções como frame-ancestors, report-uri e report-to serão completamente ignoradas pelo navegador. Para proteção completa contra clickjacking e suporte integral à telemetria, a CSP deve sempre ser entregue como um cabeçalho de resposta HTTP.

Ferramentas e utilitários relacionados

Todas as ferramentas →