Avaliador de CSP
Cole uma Content-Security-Policy, como valor de cabeçalho, linha de cabeçalho inteira, cabeçalho Report-Only, elemento meta ou várias de uma vez, e leia-a como o CSP Level 3 a lê: cada diretiva nomeada e explicada, cada expressão de fonte classificada pela gramática (palavra-chave, nonce, hash, esquema, host e seus curingas), a lista de fontes em vigor por destino pela cadeia de recurso, e uma lista graduada de achados, cada um citando a especificação: 'unsafe-inline' e 'unsafe-eval', fontes curinga, data: e http:, object-src, base-uri e frame-ancestors ausentes, nonces curtos, 'strict-dynamic' sem nonce, palavras-chave sem aspas, pontos e vírgulas faltando, diretivas duplicadas, desconhecidas e obsoletas, diretivas ignoradas em meta ou em Report-Only, e se a política atende à Strict CSP da própria especificação. Só decodifica e gradua, offline: nada é buscado.
Segurança e WAFfraca Ao menos um achado alto: a política pode ser contornada ou não faz o que diz. Lida como valor de cabeçalho.
Script inline é permitido ('unsafe-inline' não está anulado). eval() é permitido; compilação de WebAssembly é permitida. Nenhum nonce, nenhum hash para script.
Achados: 3 altos, 3 médios, 3 baixos, uma nota, nada marcado como bom.
5 diretivas
default-srcCSP3diretiva de buscaO recurso para toda diretiva de busca não definida: "when default-src is set, every fetch directive that isn't explicitly set will fall back to the value default-src specifies." Não há herança: uma diretiva definida o substitui por inteiro (6.1.3).
'self'selfscript-srcCSP3diretiva de buscaRestringe os locais de que scripts podem ser executados: requisições de script, blocos inline, manipuladores de evento inline (pelo recurso de script-src-attr), eval() e parentes (controlados por 'unsafe-eval'), compilação de WebAssembly (controlada por 'wasm-unsafe-eval') e scripts de worker pelo recurso de worker-src (6.1.10).
'self'self'unsafe-inline'palavra-chave'unsafe-eval'palavra-chavehttps://cdn.example.comhostdata:esquema'unsafe-inline': permite todo bloco de script inline, manipulador de evento inline, URL javascript: ou estilo inline do tipo da diretiva, a menos que um nonce ou hash (ou, para script, 'strict-dynamic') na mesma lista o anule (6.7.3.2).'unsafe-eval': permite eval(), Function(), setTimeout e setInterval com string, e compilação de WebAssembly; uma flag global da página lida de script-src ou default-src (6.1.10).https://cdn.example.com: uma host-source: esquema https, host cdn.example.com, porta a padrão do esquema, caminho qualquer. Um host sem esquema casa com o esquema da página e a sua elevação segura (6.7.2.8).data:: uma scheme-source: qualquer URL cujo esquema seja data, em qualquer host (6.7.2.8).
img-srcCSP3diretiva de buscaRestringe as URLs de que imagens podem ser carregadas (6.1.6).
*hostdata:esquema*: uma host-source: esquema qualquer (o da página, ou a sua elevação segura), host * (um curinga: casa com os subdomínios desse host, e os subdomínios deles), porta a padrão do esquema, caminho qualquer. Um host sem esquema casa com o esquema da página e a sua elevação segura (6.7.2.8).data:: uma scheme-source: qualquer URL cujo esquema seja data, em qualquer host (6.7.2.8).
style-srcCSP3diretiva de buscaRestringe os locais de que estilo pode ser aplicado: requisições de folhas de estilo (link, @import, o cabeçalho Link), blocos style inline e atributos style (6.1.13).
'self'self'unsafe-inline'palavra-chave'unsafe-inline': permite todo bloco de script inline, manipulador de evento inline, URL javascript: ou estilo inline do tipo da diretiva, a menos que um nonce ou hash (ou, para script, 'strict-dynamic') na mesma lista o anule (6.7.3.2).
font-srcCSP3diretiva de buscaRestringe as URLs de que fontes podem ser carregadas (6.1.4).
https://fonts.gstatic.comhosthttps://fonts.gstatic.com: uma host-source: esquema https, host fonts.gstatic.com, porta a padrão do esquema, caminho qualquer. Um host sem esquema casa com o esquema da página e a sua elevação segura (6.7.2.8).
A política em vigor
O que de fato governa cada destino, depois da lista de recurso de 6.8.3 (script-src-elem recorre a script-src e depois a default-src; worker-src a child-src, script-src, default-src; frame-src a child-src, default-src; as demais a default-src; base-uri, form-action e frame-ancestors nunca recorrem).
| destino | governado por | fontes em vigor |
|---|---|---|
script-src-elem elementos e requisições de script | script-src (recurso) | 'self''unsafe-inline''unsafe-eval'https://cdn.example.comdata: |
script-src-attr manipuladores de evento inline | script-src (recurso) | 'self''unsafe-inline''unsafe-eval'https://cdn.example.comdata: |
style-src-elem folhas de estilo e elementos style | style-src (recurso) | 'self''unsafe-inline' |
style-src-attr atributos style | style-src (recurso) | 'self''unsafe-inline' |
worker-src workers | script-src (recurso) | 'self''unsafe-inline''unsafe-eval'https://cdn.example.comdata: |
connect-src fetch, XHR, WebSocket, beacons | default-src (recurso) | 'self' |
manifest-src manifestos de aplicação | default-src (recurso) | 'self' |
object-src conteúdo de plugin | default-src (recurso) | 'self' |
frame-src frames | default-src (recurso) | 'self' |
media-src áudio, vídeo, trilhas | default-src (recurso) | 'self' |
font-src fontes | font-src | https://fonts.gstatic.com |
img-src imagens | img-src | *data: |
base-uri o elemento base | sem restrição | qualquer coisa |
form-action alvos de envio de formulário | sem restrição | qualquer coisa |
frame-ancestors quem pode incorporar esta página | sem restrição | qualquer coisa |
Uma diretiva definida substitui o recurso por inteiro: "There is no inheritance" (6.1.3). Uma linha sem restrição significa que nenhuma diretiva da cadeia está presente, então esse destino pode carregar de qualquer lugar.
10 achados
- altoC14
script-src'unsafe-inline''unsafe-inline''unsafe-inline' em script-src permite todo bloco de script inline, manipulador de evento inline e URL javascript:, que é o que uma carga de XSS é. A leitura da própria especificação: script inline é bloqueado "unless every policy allows inline script ... explicitly, by specifying 'unsafe-inline', a nonce-source or a hash-source" (6.1.10). Substitua por nonces ou hashes; "nonces provide a substantial improvement over 'unsafe-inline'" (7.1).
- altoC15
script-src'unsafe-eval''unsafe-eval''unsafe-eval' em script-src permite eval(), Function(), e setTimeout ou setInterval com string: "The following JavaScript execution sinks are gated on the 'unsafe-eval' and 'trusted-types-eval' source expressions" (6.1.10). É uma flag global da página, então um XSS que alcance qualquer sumidouro de string vira código.
- altoC17
script-srcUm curinga ou esquema solto para scriptdata:data: em script-src permite script de qualquer URL data:. Um esquema solto é uma lista de permissão da web inteira, ou, para data:, do que o atacante codificar inline; a Strict CSP da especificação usa nonces ou hashes e mantém https: só como recurso atrás de 'strict-dynamic' (8.5).
- médioC18
script-srcUma lista de hosts para scripthttps://cdn.example.comscript-src permite script por host (https://cdn.example.com) sem nonce nem hash. Listas de hosts são a classe de desvio que a própria especificação descreve: "Host- and path-based policies are tough to get right, especially on sprawling origins like CDNs" (8.2), e 8.5 recomenda nonces ou hashes com 'strict-dynamic'. Qualquer endpoint JSONP, cópia de AngularJS ou arquivo enviado por usuário num host permitido executa.
- médioC21base-uri
Sem base-uri. Um <base href> injetado reescreve toda URL relativa da página, scripts incluídos, e base-uri não recorre a default-src. A Strict CSP da especificação: "base-uri: Specify a value of either 'self' or 'none'" (8.5).
- médioC22frame-ancestors
Sem frame-ancestors: qualquer site pode incorporar esta página num frame, que é a classe de clickjacking para a qual frame-ancestors existe (6.4.2). Ela não recorre a default-src: "a policy that declares default-src 'none' will still allow the resource to be embedded by anyone." Acrescente frame-ancestors 'none' ou 'self' ao cabeçalho (em meta é ignorada).
- baixoC14
style-src'unsafe-inline''unsafe-inline''unsafe-inline' em style-src permite estilos inline e atributos style. Injeção de CSS é uma classe menor que injeção de script, mas pode exfiltrar dados por seletores e URLs de fundo; nonces ou hashes funcionam para estilo também.
- baixoC19
script-src'self' para script'self''self' para script permite tudo o que a própria origem da página serve. Está bem enquanto essa origem não servir endpoint JSONP, AngularJS ou framework parecido que o atacante possa dirigir, nem conteúdo enviado por usuários; caso contrário é o desvio que 8.2 descreve.
- baixoC20
default-srcobject-src'self'Conteúdo de plugin é permitido de 'self' (por default-src). A menos que a página incorpore plugins, object-src 'none' fecha o sumidouro por inteiro (6.1.9).
- notaC25Relatórios
Sem report-to e sem report-uri: as violações são bloqueadas (ou, em Report-Only, nada acontece) sem que ninguém saiba. report-to nomeia um grupo de endpoints da Reporting API (6.5.2); a especificação sugere report-uri ao lado para navegadores antigos (6.5.1).
Os outros cabeçalhos de segurança (HSTS, X-Content-Type-Options, Referrer-Policy, COOP e os demais) são lidos pelo verificador de cabeçalhos seguros. Esta página lê o texto da política contra o CSP Level 3 (W3C Working Draft, 16 de setembro de 2026) e a gradua pelas frases da própria especificação; não busca a página que a política protege, então não sabe que scripts inline existem, se um nonce realmente muda a cada resposta ou se um host permitido serve JSONP. Os achados sobre listas de hosts são sobre a classe, não sobre um desvio específico. Várias políticas são avaliadas uma a uma; quando várias são impostas, cada uma precisa permitir um carregamento (8.1). Entradas acima de 20.000 caracteres são recusadas.
Referências
- Content Security Policy Level 3, W3C Working Draft 16 September 2026
- Mixed Content, W3C Candidate Recommendation Draft 23 February 2023: 6.1 Strict Mixed Content Checking
- Upgrade Insecure Requests, W3C Candidate Recommendation 8 October 2015
- Trusted Types, W3C Working Draft 23 June 2026: 4.2 Integration with Content Security Policy
- Google csp-evaluator (Apache-2.0): the set of security, strict-CSP and parser checks that this tool re-implements from the specification's sentences