Quando tentei implantar meu aplicativo em dispositivos com sistema Android acima de 5.0.0 ( Lollipop ), continuei recebendo este tipo de mensagens de erro:
07-03 18: 39: 21.621: D / SystemWebChromeClient (9132): file: ///android_asset/www/index.html: Linha 0: Recusou-se a carregar o script 'http: // xxxxx' porque viola o seguinte Conteúdo Diretiva de política de segurança: "script-src 'self' 'inseguro-eval' 'inseguro-embutido'". 07-03 18: 39: 21.621: I / chromium (9132): [INFO: CONSOLE (0)] "Recusou-se a carregar o script 'http: // xxx' porque viola a seguinte diretiva da Política de Segurança de Conteúdo:" script- src 'self' 'inseguro-eval' 'inseguro-embutido' ".
No entanto, se eu o implantei em um dispositivo móvel com sistema Android 4.4.x ( KitKat ), a política de segurança funciona com as padrão:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
Então pensei, talvez, devesse mudar para algo assim:
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">
Basicamente, ambas as opções não funcionam para mim. Como posso resolver esse problema?
fonte
Respostas:
Tente substituir sua meta tag pela seguinte:
Ou, além do que você tem, você deve adicionar
http://*
a ambosstyle-src
e,script-src
como visto acima, adicionado após 'self'.Se o seu servidor estiver incluindo o
Content-Security-Policy
cabeçalho, o cabeçalho substituirá o meta.fonte
A auto-resposta dada por MagngooSasa resolveu , mas para qualquer outra pessoa tentando entender a resposta, aqui estão mais alguns detalhes:
Ao desenvolver aplicativos Cordova com Visual Studio, tentei importar um arquivo JavaScript remoto [localizado aqui http://Guess.What.com/MyScript.js], mas tenho o erro mencionado no título.
Aqui está a meta tag anterior , no arquivo index.html do projeto:
Aqui está a metatag corrigida , para permitir a importação de um script remoto:
E não há mais erros!
fonte
Foi resolvido com:
fonte
Usamos isto:
fonte
Para quem procura uma explicação completa, recomendo que você dê uma olhada na Política de Segurança de Conteúdo: https://www.html5rocks.com/en/tutorials/security/content-security-policy/ .
Os ataques XSS são baseados na incapacidade do navegador de distinguir o código do seu aplicativo do código baixado de outro site. Portanto, você deve colocar na lista de permissões as origens do conteúdo que considera seguro para baixar conteúdo, usando o
Content-Security-Policy
cabeçalho HTTP.Esta política é descrita usando uma série de diretivas de política, cada uma das quais descreve a política para um determinado tipo de recurso ou área de política. Sua política deve incluir uma diretiva de política default-src, que é um fallback para outros tipos de recursos quando eles não têm políticas próprias.
Portanto, se você modificar sua tag para:
Você está dizendo que você está autorizando a execução de código Javacsript (
script-src
) desde as origens'self'
,http://onlineerp.solution.quebec
,'unsafe-inline'
,'unsafe-eval'
.Eu acho que os dois primeiros são perfeitamente válidos para o seu caso de uso, estou um pouco inseguro sobre os outros.
'unsafe-line'
e'unsafe-eval'
representam um problema de segurança, então você não deve usá-los, a menos que tenha uma necessidade muito específica deles:fonte
String de permissão completa
As respostas anteriores não resolveram meu problema, porque não incluem
blob: data: gap:
palavras-chave ao mesmo tempo; então aqui está uma string que faz:Aviso: Isso expõe o documento a muitos exploits. Certifique-se de evitar que os usuários executem códigos no console ou estejam em um ambiente fechado como um aplicativo Cordova .
fonte
Para elaborar um pouco mais sobre isso, adicionando
para a meta tag assim,
corrige o erro.
fonte
Adicionar a metatag para ignorar esta política não estava nos ajudando, porque nosso servidor da web estava injetando o
Content-Security-Policy
cabeçalho na resposta.Em nosso caso, estamos usando o Ngnix como o servidor da web para um aplicativo Tomcat 9 baseado em Java. Do servidor da web, está direcionando o navegador para não permitir
inline scripts
, portanto, para um teste temporário, desativamosContent-Security-Policy
comentando.Como desligar no ngnix
Por padrão, o arquivo ngnix ssl.conf incluirá um cabeçalho na resposta:
#> grep 'Content-Security' -ir /etc/nginx/global/ssl.conf add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; script-src 'self'; img-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self';";
Se você apenas comentar esta linha e reiniciar o ngnix, ele não deverá adicionar o cabeçalho à resposta.
fonte
A provável razão pela qual você obteve este erro é provavelmente porque você adicionou a pasta / build ao seu arquivo .gitignore ou geralmente não fez o check-in no Git.
Então, quando você envia o Git para o Heroku master, a pasta de construção que você está referenciando não é enviada para o Heroku. E é por isso que mostra esse erro.
Essa é a razão pela qual ele funciona adequadamente localmente, mas não quando você implantou no Heroku.
fonte