如何放宽Chrome中的内容安全政策?


18

最近,诸如Facebook之类的某些网站使用内容安全策略(CSP)来限制来自“不可信来源”的脚本的加载。例如,当请求Facebook HTML内容(例如https://www.facebook.com)时,Facebook的HTTP响应包括以下响应标头:

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;

这对一些需要从不受信任的源加载和执行Javascript库的小书签产生了影响。

例如,每当我尝试在Facebook页面上运行Show Anchors小书签时,此小书签的执行都会失败,因为它会尝试从不受信任的源中加载jQuery。在Chrome的开发者控制台中,它将显示:

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

我已经找到了有关此主题的Chrome文档页面,但该页面仅适用于Chrome 扩展程序

我正在寻找可以让我

  • 要么一次性停用CSP
  • 或将我的可靠来源永久列入白名单。


@Rudie可以在Chrome Mobile上使用吗?
迈克尔

@Michael如果Chrome Mobile支持现代扩展名。WeRequest是新的。我没有使用Chrome Mobile,所以我不知道。
鲁迪(Rudie)2014年

Answers:


2

Chrome Apps认可的方法

使用模板库

使用提供预编译模板的库,您已经准备就绪。您仍然可以使用不提供预编译的库,但是这需要您自己做一些工作,并且存在一些限制。

您将需要使用沙箱隔离要进行“评估”操作的任何内容。沙箱可将CSP提升到您指定的内容上。

沙盒本地内容

沙盒允许指定的页面以沙盒唯一来源提供。然后,这些页面不受其内容安全策略的约束。沙盒页面可以使用iframe,内联脚本和eval()(最后两个是被阻止的)。这将修复“不安全的内联”和“不安全的评估”。

  • 在沙箱中使用内联脚本
  • 在清单中包含沙箱

访问远程资源

您可以通过XMLHttpRequest获取远程资源,并通过blob:,data:或filesystem:URL提供它们。这应该可以解决jQuery提取问题。

舱单要求

为了能够进行跨域访问XMLHttpRequests,您需要为远程URL的主机添加权限。

跨源 XMLHttpRequest

将远程URL提取到应用程序中,并将其内容作为blob:URL提供。


我认为您无法执行任何这些操作。要修复unsafe-evalunsafe-inline响应标头,只有脚本所有者可以修复代码;如果它在公共领域,则可以修复它。所有这些可能都是一次性修复。


骇客

不安全窗口

http://wiki.greasespot.net/UnsafeWindow

内容脚本注入

http://wiki.greasespot.net/Content_Script_Injection


但是,这些黑客程序有其缺点,因为它们肯定会造成至少第一个安全漏洞。


0

您可以在内容选项卡中编辑这些设置,您可以通过chrome://settings/content在地址栏中输入直接访问这些设置。您可以将特定内容类型上的特定域列入白名单。


9
我该在内容设置的确切位置执行该操作,以及如何执行此操作?我尝试将我的网站添加到“ cookie和网站数据例外”中,但没有任何效果。其他设置似乎都不相关。
迈克尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.