你能从 firefox 扩展加载外部可执行文件 javascript 吗?

can you load external executable javascript from a firefox extension?

有谁知道是否有办法从 firefox 附加扩展加载任何外部可执行文件 javascript?我查看了 scriptloader.loadSubScript,但它似乎只能从本地资源加载。

如有任何帮助,我们将不胜感激。

您始终可以对文件进行 xhr,将内容保存到磁盘,然后将 scriptloader.loadSubScript 与附加组件一起使用

虽然这会违反 AMO 政策,因此您无法将附加组件上传到 http://addons.mozilla.org

尝试使用 Components.utils.import .

示例:

const {Cc,Ci,Cu} = require("chrome");

Cu.import("url/path of the file");

注:

js 文件使用 DOM 对象,如 window、导航器等,将 return 错误提示 "window/navigator is undefined"。这仅仅是因为 main.js 代码无法访问 DOM。

有关详细信息,请参阅此 thread

正如@erikvold 已经指出的那样,这样做会存在安全隐患并且它还违反了 AMO 规则(因为它存在安全隐患)。

考虑你的服务器被入侵,或者有一种方法可以通过 MITM 连接检索远程脚本(TLS 漏洞任何人 :p),或者你出售你的域并且新所有者决定发送脚本来收集信用卡直接来自用户硬盘的信息...

但是,可以在非特权环境中 运行 远程脚本,就像在网站中 运行 一样。

  • 创建 Sandbox。沙箱应该是无特权的,例如将您域中的 URL 传递给构造函数。
  • 检索您的脚本,例如使用 XHR。
  • Evaluate your script 在沙盒中并提取它可能为您生成的任何数据。

这基本上就是像 Greasemonkey(执行用户脚本)这样的工具所做的。

以安全的方式创建和使用 Sandbox 很困难,而且没有特权的 Sandbox 禁止很多用例,但也许它对你的东西有用。