Chrome 应用认可的方法

Chrome 应用认可的方法

最近,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 页面上,此书签小程序的执行失败,因为它尝试从不受信任的来源加载 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
  • 或永久将我的可信来源列入白名单。

答案1

Chrome 应用认可的方法

使用模板库

使用提供预编译模板的库即可。您仍然可以使用不提供预编译的库,但这需要您做一些工作,并且存在限制。

您需要使用沙盒来隔离您想要执行“评估”操作的任何内容。沙盒会针对您指定的内容解除 CSP。

沙盒本地内容

沙盒允许在沙盒内的唯一来源中提供指定页面。这些页面将不受其内容安全策略的约束。沙盒内的页面可以使用 iframe、内联脚本和 eval()(后两者是被阻止的)。这将修复“unsafe-inline”和“unsafe-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


然而,黑客行为也有弊端,因为至少第一次攻击肯定会造成安全漏洞。

答案2

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

相关内容