如何在 Chrome 中放松内容安全策略?

Abd*_*ull 19 google-chrome http

最近,一些网站(例如 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;
Run Code Online (Sandbox Code Playgroud)

这对一些需要从不受信任的来源加载和执行 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".
Run Code Online (Sandbox Code Playgroud)

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

我正在寻找可以让我

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

小智 2

Chrome 应用认可的方法

\n

使用模板库

\n

使用提供预编译模板的库,您\xe2\x80\x99 就全部准备好了。您仍然可以使用不提供预编译的库,但它需要您做一些工作并且存在限制。

\n

您将需要使用沙箱来隔离您想要执行 \xe2\x80\x98eval\xe2\x80\x99 操作的任何内容。沙盒可提升您指定内容的 CSP。

\n

沙箱本地内容

\n

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

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

访问远程资源

\n

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

\n

舱单要求

\n

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

\n

跨域XMLHttpRequest

\n

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

\n
\n

我认为这些你都做不到。要修复unsafe-evalunsafe-inline响应标头,只有脚本所有者可以修复代码,或者如果它位于公共域中,您可以修复它。所有这一切可能都是一次性修复。

\n
\n

黑客

\n

不安全窗口

\n

http://wiki.greasespot.net/UnsafeWindow

\n

内容脚本注入

\n

http://wiki.greasespot.net/Content_Script_Injection

\n
\n

然而,这些黑客攻击也有缺点,因为他们知道至少会造成第一个安全漏洞,这是肯定的。

\n