Verifique uma Content-Security-Policy diretiva por diretiva e veja como scripts passam por ela
Funciona no seu navegador. Nada do que você digita é enviado a lugar nenhum. Verificado em 16 de outubro de 2026.Uma Content-Security-Policy diz ao navegador de onde scripts e outros conteúdos podem ser carregados. Ela só protege contra scripts injetados se script-src evitar 'unsafe-inline', curingas e hosts contornáveis, object-src for 'none' e base-uri for restrito. Um estudo do Google de 2016 constatou que 94.7% das políticas reais podiam ser contornadas; nonces com 'strict-dynamic' resolvem isso.
Esta página foi traduzida automaticamente do original em inglês. Nenhuma pessoa revisou ainda a tradução; a versão em inglês é a que deve ser considerada. Ler o original em inglês
Cole a política, a linha inteira do cabeçalho Content-Security-Policy ou a tag <meta> que a contém.
Leia os resultados, os mais graves primeiro: cada um indica a diretiva e o que um invasor poderia fazer com ela.
Confira na tabela de diretivas nomes escritos errado e fontes que o navegador vai ignorar.
Corrija a política, ou comece pelo modelo estrito, e cole-a de novo até restarem apenas observações.
É fácil errar sutilmente uma Content-Security-Policy, e os navegadores nunca reclamam: uma diretiva que eles não conseguem ler é ignorada. Esta ferramenta lê a política exatamente como a especificação CSP Level 3 diz que um navegador faz e depois a avalia com base nas conclusões do estudo do Google de 2016 sobre políticas reais.
Resultados, os mais graves primeiro.
| Gravidade | Exemplos |
|---|---|
| Alta | 'unsafe-inline' sem nonce, * ou https: em script-src, object-src diferente de 'none', 'strict-dynamic' sem nonce, um ponto e vírgula faltando, self sem aspas |
| Média | 'unsafe-eval', hosts permitidos conhecidos por servir JSONP ou AngularJS antigo, base-uri aberto, fontes em http simples, diretivas desconhecidas |
| Baixa | sem frame-ancestors, nonces curtos, diretivas obsoletas, duplicatas, 'unsafe-inline' para estilos |
| Observação | sem relatórios, report-uri sem report-to, fontes que os navegadores ignoram com uma política estrita |
O fallback é aplicado. Quando script-src está ausente, default-src é avaliado no lugar; quando ambos estão ausentes, scripts podem ser carregados de qualquer lugar, e a ferramenta avisa.
Cole o que tiver. A política pura, a linha inteira do cabeçalho ou uma tag <meta http-equiv>. Políticas entregues em uma tag meta não podem usar frame-ancestors, report-uri nem sandbox, e a ferramenta sinaliza isso. Um cabeçalho com várias políticas separadas por vírgulas é dividido, já que cada uma é aplicada.
Cada fonte é verificada. Palavras-chave, nonces, hashes (com o comprimento certo para SHA-256, 384 ou 512), esquemas e hosts são verificados contra a gramática, e uma diretiva escrita errado recebe uma sugestão, como frame-ancestor para frame-ancestors.
Modelo estrito. Um toque carrega uma política baseada em nonce: script-src com um nonce e 'strict-dynamic', object-src 'none' e base-uri 'none'. Seu servidor precisa escrever um nonce aleatório novo no cabeçalho e em cada tag script a cada resposta.
A política é lida no seu navegador e nunca é enviada a lugar nenhum. Para buscar os cabeçalhos que um site no ar envia, use o HTTP Headers Checker.
Não. Com 'unsafe-inline', qualquer script que um invasor consiga injetar na página é executado, que é exatamente o que uma Content-Security-Policy existe para impedir. Em vez disso, use um nonce ou hash para cada script inline. Quando há um nonce ou hash, os navegadores modernos ignoram 'unsafe-inline', então mantê-lo como fallback para navegadores antigos é inofensivo.
A palavra-chave 'strict-dynamic' permite que um script confiável por meio de um nonce ou hash carregue outros scripts, enquanto listas de hosts permitidos e https: são ignoradas pelos navegadores que a suportam. Combinada com um nonce, ela gera uma política ao mesmo tempo estrita e fácil de implantar. Sem nenhum nonce ou hash, ela bloqueia todos os scripts.
Plugins carregados com as tags object ou embed podem executar script fora das regras de script-src, e arquivos Flash antigos em hosts permitidos eram uma forma comum de contorno. Poucos sites ainda precisam de plugins, então object-src 'none' elimina todo esse caminho. Se object-src estiver ausente, vale default-src, que muitas vezes não é 'none'.
Hosts de scripts populares, como grandes CDNs e alguns domínios do Google, servem endpoints JSONP ou versões antigas do AngularJS. Um invasor que consiga injetar marcação pode carregar esses arquivos permitidos para executar o próprio código. O estudo do Google de 2016 constatou que 94.7% das políticas reais baseadas em listas de hosts eram contornáveis dessa forma; nonces com 'strict-dynamic' evitam o problema.
O navegador ignora a diretiva e registra um aviso no console, mas o resto da política continua valendo, então a página perde essa proteção sem alarde. Um erro de digitação como frame-ancestor em vez de frame-ancestors deixa a página exposta a clickjacking. Esta ferramenta lista as diretivas desconhecidas e sugere o nome que você provavelmente quis dizer.
Sim, com uma tag meta http-equiv no head da página, mas três diretivas não funcionam ali: frame-ancestors, report-uri e sandbox. Políticas em uma tag meta também só se aplicam ao conteúdo depois da tag. Enviar a política como cabeçalho de resposta HTTP é a escolha confiável; a tag meta serve para hospedagem estática sem controle dos cabeçalhos.
Taxas e regras mudam; confira a fonte antes de confiar em um valor.
Ainda com dúvidas? Pergunte sobre Avaliador de CSP e qualquer pessoa que saiba pode responder. Não é preciso ter conta.