JavaScript完全“篡改安全”变量

时间:2013-12-15 11:30:02

标签: javascript closures browser-extension

所以,这就是问题所在。

我有类似的东西:

// Dangerous __hostObject that makes requests bypassing 
// the same-origin policy exposed from other code.
(function(){
    var danger = __hostObject;
})();
delete __hostOBject;

我知道没有脚本可以篡改或访问__hostObject,我是否完全安全?

(如果他们可以,我有CSRF vulnerability或更糟。)

注1:这是针对浏览器扩展的。我有比在页面上运行的其他脚本更好的钩子。我在他们面前执行,我们在他们加载之前就完成了。

注意2:我知道一般会多次询问这个脚本。我想知道如果我知道在任何其他脚本之前加载是否可行。

2 个答案:

答案 0 :(得分:5)

如果__hostObject可删除,则问题中的代码是安全的。

但是,我认为您的实际代码稍微复杂一些。在这种情况下,需要非常仔细的编码,因为页面可以更改内置方法(例如Function.prototype.call)以进入关闭并执行他们想要的任何邪恶的事情。当我进行这样的测试时,我通过这种方法成功地滥用了扩展框架的功能,例如Kango和Crossrider。

答案 1 :(得分:0)

不会简单地添加断点并重新加载脚本会暴露您的__hostObject