我正在开发FireFox扩展,并且必须存储一些我需要安全且无法从任何其他扩展/页面等访问的值。
我正在使用我的扩展程序代码设置,如下所示:
if(!namesp) var namesp={};
if(!namesp.anothernamesp) namesp.anothernamesp={};
namesp.anothernamesp = function() {
var mySecureValue = ''; //is this variable accessible from anything aside from inside the namesp.anothernamesp scope?
return {
useSecureValue: function() {
//do something here with mySecureValue
}
};
function getSecureValue() { //can this method be called from anywhere besides inside the namesp.anothernamesp scope?
return mySecureValue;
}
}();
除了我自己的扩展以外,还有什么方法可以访问“mySecureValue”吗?为了使我可以在我的扩展等中打开的任何窗口全局访问此对象,我将对象传递给window.openDialog()方法中的窗口,并使用window.arguments从新创建的窗口访问它。谢谢。
答案 0 :(得分:1)
似乎很正确。实际上,这是大多数教程和书籍教授模拟私有方法和属性的方式。
答案 1 :(得分:0)
否,无法您可以阻止一个扩展程序影响其他扩展程序。
原因是:
如果某个其他扩展程序想要读取您的变量mySecureValue
,则可以通过以下方式执行此操作:
profile/extensions
文件夹中读取)mySecureValue
!所有这一切最不幸的原因是Mozilla firefox没有在扩展之间实现任何形式的正确分离。每个扩展都可以为每个人做好一切。它甚至可以超越shellcode并对其他伤害进行仲裁。
您唯一可以尝试的是混淆您的秘密数据。这虽然不会阻止,但可能只会使攻击复杂化。