Como relaxar a Política de segurança de conteúdo no Chrome?

17

Ultimamente, alguns sites como o Facebook usam a Política de segurança de conteúdo (CSP) para restringir o carregamento de scripts de "fontes não confiáveis". Por exemplo, ao solicitar conteúdo HTML do Facebook (por exemplo, https://www.facebook.com ), a resposta HTTP do Facebook inclui o seguinte cabeçalho de resposta:

x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;

Isso tem impacto em alguns bookmarklets que exigem o carregamento e a execução de bibliotecas Javascript de fontes não confiáveis.

Por exemplo, sempre que tento executar o bookmarklet Show Anchors em uma página do Facebook, a execução desse bookmarklet falha ao tentar carregar o jQuery de uma fonte não confiável. No console do desenvolvedor do Chrome, ele diz:

Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".

Encontrei uma página de documentação do Chrome sobre este tópico, mas ela se aplica apenas às extensões do Chrome .

Estou procurando soluções que me permitam

  • por um único tempo, desative o CSP
  • ou coloque na lista de permissões permanentemente minhas fontes confiáveis.
Abdull
fonte
@Rudie Isso funcionará para o Chrome Mobile?
Michael
@ Michael Se o Chrome Mobile suportar extensões modernas. O WeRequest é meio novo. Como não uso o Chrome Mobile, não faço ideia.
quer

Respostas:

2

Métodos aprovados pelos aplicativos do Chrome

Usar bibliotecas de modelos

Use uma biblioteca que ofereça modelos pré-compilados e pronto. Você ainda pode usar uma biblioteca que não oferece pré-compilação, mas será necessário algum trabalho da sua parte e há restrições.

Você precisará usar o sandboxing para isolar qualquer conteúdo para o qual deseja fazer 'avaliação'. O sandboxing eleva o CSP ao conteúdo que você especificar.

Conteúdo local da sandbox

O sandbox permite que as páginas especificadas sejam veiculadas em uma origem exclusiva do sandbox. Essas páginas são então isentas de sua Política de segurança de conteúdo. As páginas em área restrita podem usar iframes, scripts em linha e eval () (e as duas últimas são as que estão sendo evitadas). Isso corrigirá 'inseguro-inline' e 'inseguro-avaliação'.

  • Use scripts embutidos na sandbox
  • Incluir sandbox no manifesto

Acessar recursos remotos

Você pode buscar recursos remotos via XMLHttpRequest e atendê-los via URLs de blob :, data: ou file system: Isso deve corrigir o problema de busca do jQuery.

Requisito de manifesto

Para poder fazer a origem cruzada XMLHttpRequests, você precisará adicionar uma permissão para o host do URL remoto.

Origem cruzada XMLHttpRequest

Busque o URL remoto no aplicativo e sirva seu conteúdo como um blob:URL.


Eu não acho que você pode fazer nada disso. Para corrigir os cabeçalhos unsafe-evale unsafe-inlineresposta, apenas o proprietário do script pode corrigir o código ou, se estiver em domínio público, você pode corrigi-lo. Tudo isso é provavelmente uma solução única.


Hacks

UnsafeWindow

http://wiki.greasespot.net/UnsafeWindow

Injeção de Script de Conteúdo

http://wiki.greasespot.net/Content_Script_Injection


Os hacks, no entanto, têm desvantagens, porque sabidamente causam falhas de segurança no primeiro, definitivamente.

café da manhã
fonte
0

Você pode editar essas configurações na guia Conteúdo, que você pode acessar diretamente, digitando chrome://settings/contentna barra de endereço. Você pode colocar na lista branca domínios específicos em tipos de conteúdo específicos.

Gman Smith
fonte
8
Onde exatamente nas configurações de conteúdo faço isso e como? Tentei adicionar meu site às "exceções de dados de cookies e sites" sem nenhum efeito. Nenhuma das outras configurações parece relevante.
Michael