所以,问题来了。
我有这样的东西:
// Dangerous __hostObject that makes requests bypassing
// the same-origin policy exposed from other code.
(function(){
var danger = __hostObject;
})();
delete __hostOBject;
我知道没有脚本可以篡改或访问 __hostObject
是否绝对安全?
(如果可以,我有一个 CSRF vulnerability 或更糟。)
注意 1:这是一个浏览器扩展。我有比页面上运行的其他脚本更好的钩子(Hook)。我先于他们执行,甚至在他们加载之前就完成了。
注意 2:我知道一般情况下已多次询问脚本。我想知道是否有可能,如果我知道我在 任何其他脚本之前加载。
最佳答案
如果 __hostObject
是可删除的,那么您问题中的代码是安全的。
但是,我假设您的真实代码稍微复杂一些。在这种情况下,需要非常小心的编码,因为页面可以更改内置方法(例如 Function.prototype.call
)以进入您的闭包并为所欲为。我在做这样的测试时,已经通过这种方式成功滥用了Kango、Crossrider等扩展框架的功能。
关于JavaScript 完全 "tamper safe"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20593982/