【问题标题】:Is it possible to bypass CSP when injecting js in the page from a Firefox plugin?从 Firefox 插件在页面中注入 js 时是否可以绕过 CSP?
【发布时间】:2013-08-21 22:51:57
【问题描述】:

我有一个 firefox 插件,它通过在页面中注入一些 javascript(通过在 head 元素下创建一个元素,并将其 innerHTML 值设置为要执行的 javascript)来与 github 的 web 应用程序交互。

但是,它最近刚刚停止工作。然后我看到了以下警告:

Timestamp: 8/21/13 5:45:42 PM
Warning: CSP WARN:  Directive inline script base restriction violated
Source File: https://github.com/login
Line: 0
Source Code:
myjscode();...

Github 返回以下标头:

X-Content-Security-Policy: default-src *; script-src 'self'   https://github.global.ssl.fastly.net https://jobs.github.com https://ssl.google-analytics.com https://collector.githubapp.com https://analytics.githubapp.com; style-src 'self' 'unsafe-inline' https://github.global.ssl.fastly.net; object-src 'self' https://github.global.ssl.fastly.net

我知道 Firefox 开始通过 X-Content-Security-Policy 标头支持 CSP,但我认为会有一些机制来防止插件中的代码注入制动。

有谁知道扩展 API 是否有任何特定机制可以在页面中注入 javascript 并绕过 CSP 设置?基本原理是 - 如果用户安装了插件,他/她信任它,并且应该有绕过 CSP 的方法。

【问题讨论】:

  • 可能不是您正在寻找的答案,但您不应该首先将脚本注入网站。还有很多其他可用的选项,例如框架脚本(消息管理器)、SDK 页面模块、自定义沙箱,甚至 iframe。或者首先不要在页面上下文中运行您的代码,而是在浏览器中运行。
  • 你好 nmair。感谢您的评论。您能否更具体地详细说明这些选项?例如,在 Chrome 中,我使用 chrome.tabs.executeScript,效果很好。 Firefox 有类似的东西吗?谢谢
  • 我已经给出了清单。如果不知道更多关于您正在尝试做什么,我无法更具体地说明哪些最适合您的附加组件。 “我想通过点击做某事”和“我需要加载 jquery 等一些花哨的东西”之间是有区别的。
  • 这是一个与一些表单元素交互的脚本,比如填充文本输入和点击按钮。很简单的东西。

标签: javascript firefox firefox-addon content-security-policy


【解决方案1】:

这是一个与某些表单元素交互的脚本,例如填充文本输入和单击按钮。很简单的东西。

我会查看 SDK page-mod,或者对于非 SDK 插件,只需监听 load events 并使用常规 DOM API 在事件处理程序中进行操作。

将 SDK 与 page-mod 结合使用可能是最接近于 chrome.tabs.executeScript 和一般的 chrome 扩展的东西,所以我会这样做。

【讨论】:

    【解决方案2】:

    您可以在 Firefox 中执行此操作,但不推荐。 打开页面,about:config 并将 security.csp.enable 设置为 false(可能需要重新启动)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多