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 WAF
Experimente

fraca 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

  1. default-srcCSP3diretiva de busca

    O 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' self
  2. script-srcCSP3diretiva de busca

    Restringe 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.com hostdata: 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).
  3. img-srcCSP3diretiva de busca

    Restringe 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).
  4. style-srcCSP3diretiva de busca

    Restringe 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).
  5. font-srcCSP3diretiva de busca

    Restringe as URLs de que fontes podem ser carregadas (6.1.4).

    https://fonts.gstatic.com host
    • https://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).

destinogovernado porfontes em vigor
script-src-elem elementos e requisições de scriptscript-src (recurso)'self''unsafe-inline''unsafe-eval'https://cdn.example.comdata:
script-src-attr manipuladores de evento inlinescript-src (recurso)'self''unsafe-inline''unsafe-eval'https://cdn.example.comdata:
style-src-elem folhas de estilo e elementos stylestyle-src (recurso)'self''unsafe-inline'
style-src-attr atributos stylestyle-src (recurso)'self''unsafe-inline'
worker-src workersscript-src (recurso)'self''unsafe-inline''unsafe-eval'https://cdn.example.comdata:
connect-src fetch, XHR, WebSocket, beaconsdefault-src (recurso)'self'
manifest-src manifestos de aplicaçãodefault-src (recurso)'self'
object-src conteúdo de plugindefault-src (recurso)'self'
frame-src framesdefault-src (recurso)'self'
media-src áudio, vídeo, trilhasdefault-src (recurso)'self'
font-src fontesfont-srchttps://fonts.gstatic.com
img-src imagensimg-src*data:
base-uri o elemento basesem restriçãoqualquer coisa
form-action alvos de envio de formuláriosem restriçãoqualquer coisa
frame-ancestors quem pode incorporar esta páginasem restriçãoqualquer 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

  1. altoC14script-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).

  2. altoC15script-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.

  3. altoC17script-srcUm curinga ou esquema solto para script
    data:

    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).

  4. médioC18script-srcUma lista de hosts para script
    https://cdn.example.com

    script-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.

  5. 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).

  6. 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).

  7. baixoC14style-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.

  8. baixoC19script-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.

  9. baixoC20default-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).

  10. 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.

Endpoint da APIGEThttps://ronutz.com/api/v1/csp-evaluatorDocumentado, não servido. Abre a especificação.

Referências