火狐扩展名中的远程 Js 文件
Remote Js file in Firefox extension
我正在为我的网站访问者编写Firefox插件。我正在尝试使该扩展加载远程javascript文件,以便访问者可以在网站上更改其配置文件中的设置和选项以进行插件,并通过远程js加载插件。这是我尝试过的:
if(window.location.hostname=="link") {
pagesload='http://link/file.js?v='+randnw;
var req = new XMLHttpRequest();
req.open('GET', pagesload, false);
req.send();
var contents = req.responseText;
eval(contents);
}
不要!
永远不要做这样的事情!这是一场安全噩梦(即使您只在内容脚本中运行它(。
如果您计划在 Mozilla 附加组件库 (AMO( 中发布附加组件,无论是否发布,因为这样做会违反附加组件指南,您的 AMO 提交将被拒绝和/或您的自托管附加组件将在发现时因不安全而被列入阻止列表。
为什么这是不安全的?
- 您正在加载的远程脚本将在另一个更高(安全性(的上下文中运行,该上下文是显示阻止者。在内容脚本中运行时,它可能会执行内容脚本可以执行的所有操作,包括(滥用(消息传递完全特权的 SDK 模块,包括。
main.js
.在 SDK 模块中运行时,它将具有完全特权,可以执行系统用户帐户可以执行的任何操作。窃取所有用户 cookie 只是第一步。 - 远程脚本永远不能被信任。
- 当通过 http 传输时,攻击者可能很容易发起中间人攻击。
- 当通过https传输时,虽然中间人攻击变得不那么可行,但服务器操作员可以做任何他们想做的事情。服务器操作员不一定是您自己。在此期间,服务器可能已遭到入侵,或者域的所有权可能已转移。
相反
与其eval
一些远程脚本,不如只交换数据,如JSON、XML、纯文本等,并在使用前验证数据(不要简单地信任远程数据(。
如何检索
来自 SDK 模块,包括。 main.js
,您可以使用 request
或 net/xhr
模块,这两个模块都没有同源策略。
制作为跨域内容脚本,但即使没有内容脚本,它们也可以将XMLHttpRequest
用于运行它们的同一域。
您的问题还有一个使用同步 XHR 的代码段。不要使用同步 XHR。强烈不鼓励这样做,并被认为是网络上的不良做法,在附加组件中更是如此(无论如何,那里并没有真正正式支持(。
为什么您问题中的代码不起作用?
不知道,您没有提供足够的详细信息来重现问题。 例如,您甚至没有提到该代码应该在哪里工作(main.js
,内容脚本,...
相关文章:
- JS文件的路径正在消失
- 我的外部js文件无法加载
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 动态加载和卸载js文件
- 如何将变量传递到另一个js文件
- 如何将所有JS文件连接到一个文件夹中
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 如何将模板中的标记脚本移动到.js文件中
- 什么's是连接供应商js文件的最佳方式
- 如何在定义js文件后为外部javascript文件设置变量
- 如何在JS文件中获取资源(.resx)字符串
- 将*.js文件的内容放入Object中
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何使用Gmail运行.js文件
- 如何定义一个模块并使用它来分离js文件
- Angular JS文件上传到托管服务器
- 如何引用HTML中节点模块中的js文件
- 如何将JS文件从其他文件夹链接到页面