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

15

Recentemente, alguns sites, como o Facebook, usam a Política de segurança de conteúdo (CSP) para restringir o carregamento de scripts de "não confiáveis fontes". Por exemplo, ao solicitar conteúdo HTML do Facebook (por exemplo, link ), 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 Mostrar Âncoras em uma página do Facebook, a execução deste bookmarklet falha ao tentar carregar o jQuery a partir de uma fonte não confiável. No console do desenvolvedor do Google Chrome, ele dirá:

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

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

Estou procurando soluções que me permitam

  • para uma única vez, desative CSP
  • ou colocar permanentemente na lista de permissões minhas fontes confiáveis.
por Abdull 13.05.2013 / 23:12

2 respostas

1

Métodos endossados pelos aplicativos do Google Chrome

Use bibliotecas de modelos

Use uma biblioteca que oferece modelos pré-compilados e está tudo pronto. Ainda é possível usar uma biblioteca que não oferece pré-compilação, mas isso exigirá algum trabalho de sua parte e há restrições.

Você precisará usar o sandboxing para isolar qualquer conteúdo para o qual queira fazer as coisas do "eval". O sandboxing eleva o CSP no conteúdo que você especifica.

Conteúdo local da sandbox

O sandbox permite que páginas específicas sejam exibidas em uma origem exclusiva em área restrita. 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 os dois últimos são os evitados). Isso consertará 'inseguro-in-line' e 'inseguro-eval'.

  • Use scripts inline na sandbox
  • Incluir sandbox no manifesto

Acessar recursos remotos

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

Requisito de manifesto

Para fazer o cross-origin XMLHttpRequests , você precisará adicionar uma permissão para o host do URL remoto.

Origem cruzada XMLHttpRequest

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

Eu não acho que você possa fazer nada disso. Para corrigir os cabeçalhos de resposta unsafe-eval e unsafe-inline , somente o proprietário do script pode corrigir o código ou, se estiver em domínio público, você poderá corrigi-lo. Tudo isso é provavelmente uma correção única.

Hacks

UnsafeWindow

link

Injeção de script de conteúdo

link

Os hacks, no entanto, têm desvantagens porque sabem causar aberturas de segurança pelo menos no primeiro, definitivamente.

    
por 11.01.2015 / 06:11
0

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

    
por 01.03.2015 / 20:59