Política de segurança de conteúdo: as configurações da página bloquearam o carregamento de um recurso

104

Estou usando CAPTCHA no carregamento da página, mas ele está bloqueando por algum motivo de segurança.

Estou enfrentando este problema:

    Política de segurança de conteúdo: as configurações da página bloquearam o carregamento
    de um recurso em
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    ("script-src http://test.com:8080 'unsafe-inline' 'unsafe-eval'").

Usei o seguinte JavaScript e metatag:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>
Shakti Sharma
fonte
Se eu fosse você, tentaria fazer isso com código do lado do servidor, e não com javascript. JS não é muito bom com CORS e coisas semelhantes. O Google tem opções para isso ..
Gogol
Eu adicionei uma javascripttag a esta questão, porque a questão não tem nada a ver com jQuery. Afeta qualquer JavaScript. Na verdade, a pergunta seria mais útil se você remover a jQuerytag por completo, mas não é minha função fazer isso.
Manngo
2
Uma resposta agora excluída está correta. Um motivo para "Política de segurança de conteúdo: as configurações da página bloquearam o carregamento de um recurso" é se o JavaScript não está habilitado ou bloqueado (por exemplo, por NoScript ) no navegador. Nesse caso, parte da saída de erro pode ser "Não foi possível processar a diretiva desconhecida 'noscript-marcador'" .
Peter Mortensen
Não posso comentar sobre a outra sugestão para usar sobre: ​​config, então acho que vou adicioná-la aqui. Alguém recomendando acessar about: config e definir security.csp.enable como false. Todo mundo disse que essa é uma ideia horrível. Só quero dizer que essa é a solução que decidi usar também. Muitos sites simplesmente pararam de funcionar para mim no Firefox, com toneladas desses erros em todos os lugares. O Chrome ainda os carrega. Sem saber mais sobre o motivo disso, definir security.csp.enable como false permitiu que esses sites carregassem novamente usando o Firefox, e eu prefiro o Firefox ao invés do Chrome. Se o
EliT

Respostas:

85

Você disse que só pode carregar scripts de seu próprio site (próprio). Você então tentou carregar um script de outro site ( www.google.com ) e, porque você restringiu isso, você não pode. Esse é o ponto principal da Política de Segurança de Conteúdo (CSP).

Você pode alterar sua primeira linha para:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com">

Ou, como alternativa, pode valer a pena remover essa linha completamente até que você descubra mais sobre CSP. Seu CSP atual é de qualquer maneira muito frouxa (permitindo unsafe-inline, unsafe-evale uma default-srcdas *), por isso provavelmente não é a adição de muito valor, para ser honesto.

Barry Pollard
fonte
5
Esta é uma solução alternativa insegura - o verificador de CSP do Google fornece a esta linha várias falhas graves. (Infelizmente, implementar um bom CSP não é trivial e precisa ser personalizado por site.)
Freewalker
8
Eu tenho problema com este comentário. Os problemas com o CSP são por causa do CSP original. Tudo o que essa resposta fez foi pegar isso e adicionar o domínio www.google.com a isso em resposta à pergunta. Eu poderia ter sugerido apertar ainda mais o CSP ao mesmo tempo? Possivelmente, mas eu diria que está fora do escopo da questão. Especialmente porque já estava claro que o OP não estava familiarizado com CSP.
Barry Pollard de
3
Agora o CSP é "inseguro"? Isso é discutível. Permitir inseguro-in-line e inseguro-eval e uma fonte padrão de * anula muito do propósito de um CSP (por isso também sugeri removê-lo), mas deve ser lembrado que CSP nunca pode afrouxar os controles do navegador, então mesmo esta política de perda é adicionar algum controle sobre uma página que não tem CSP - como evidenciado pelo fato de que está bloqueando um script do Google! Portanto, "inseguro" provavelmente não é um bom termo. "Frouxo demais para valer a pena" talvez seja uma maneira melhor de expressar isso. Portanto, sim, este CSP deixa muito a desejar, mas adicionar o Google a ele não é uma "solução alternativa insegura".
Barry Pollard de
3
É justo que qualquer CSP (exceto "está tudo bem) geralmente seria melhor do que nenhum.
Freewalker
Há um pequeno problema com isso, estou recebendo aquele erro do chrome://global/content/elements/panel.js(Firefox) que desativa a depuração em todas as páginas
AaA
14

Com meu projeto ASP.NET Core Angular em execução no Visual Studio 2019, às vezes recebo esta mensagem de erro no console do Firefox:

Política de segurança de conteúdo: as configurações da página bloquearam o carregamento de um recurso em linha (“default-src”).

No Chrome, a mensagem de erro é:

Falha ao carregar o recurso: o servidor respondeu com um status 404 ()

No meu caso, não teve nada a ver com minha Política de Segurança de Conteúdo, mas foi simplesmente o resultado de um erro de TypeScript de minha parte.

Verifique se há um erro de TypeScript na janela de saída do IDE, como:

> ERROR in src/app/shared/models/person.model.ts(8,20): error TS2304: Cannot find name 'bool'.
>
> i 「wdm」: Failed to compile.

Observação: já que esta pergunta é o primeiro resultado no Google para esta mensagem de erro.

Daniel Congrove
fonte
11

Eu tive um tipo de erro semelhante. Primeiro, tentei adicionar as metatags no código, mas não funcionou.

Descobri que no servidor da web nginx você pode ter uma configuração de segurança que pode bloquear a execução de código externo:

# Security directives
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'  https://ajax.googleapis.com  https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com  https://themes.googleusercontent.com; frame-src https://player.vimeo.com https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

Verifique a Política de Segurança de Conteúdo. Pode ser necessário adicionar a referência da fonte.

aCustica
fonte
4
Observe que isso não é seguro - esta Content-SecurityPolicy obtém falhas de gravidade alta do avaliador de CSP do Google .
Freewalker de
1

Consegui permitir todos os meus sites necessários com este cabeçalho:

header("Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' stackexchange.com");                    
rubo77
fonte
0

Eu contornei isso atualizando a versão do Angular que eu estava usando (de v8 -> v9) e a versão do TypeScript (de 3.5.3 -> mais recente).

Entusiasta de Scala
fonte
1
Qual é a explicação?
Peter Mortensen
-7

Você pode desativá-los em seu navegador.

Raposa de fogo

Digite about:configna barra de endereços do Firefox, localize security.csp.enablee defina como false.

cromada

Você pode instalar a extensão chamada Disable Content-Security-Policypara desativar o CSP.

sendon1982
fonte
83
NUNCA faça isso, além da depuração temporária. Este é um recurso crítico de segurança do seu navegador.
hackel
4
Isso só vai consertar localmente e, além disso, deixa seu navegador muito mais vulnerável.
Neil Chowdhury
3
Este é um "conselho" para teste / depuração? Em caso afirmativo, ele deve ser mencionado na resposta para evitar a disseminação de vulnerabilidades perigosas em uma comunidade de pessoas inconscientes. A propósito, como @NeilChowdhury disse, isso vai consertar o seu sistema, e os visitantes reais do site?
Fr0zenFyr,
13
solução temporária, mas útil para depuração (mais uma)
NarendraR
5
@hackel eu FAREI isso. EU VOU.
ア レ ッ ク ス