【发布时间】: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