有没有人试过或知道如何获得匿名函数中的变量?Javascript IIFE - 后门?
例
var test = "Hi";
(function() {
var test = "Bye";
// Outputs "Bye"
console.log(test);
})();
// Outputs "Hi"
console.log(test);
正如你可以看到过去数收益“嗨”,但我想“再见”任何人都知道的方式在这个例子中获取价值“再见”?
有没有人试过或知道如何获得匿名函数中的变量?Javascript IIFE - 后门?
例
var test = "Hi";
(function() {
var test = "Bye";
// Outputs "Bye"
console.log(test);
})();
// Outputs "Hi"
console.log(test);
正如你可以看到过去数收益“嗨”,但我想“再见”任何人都知道的方式在这个例子中获取价值“再见”?
要做到这一点的唯一方法是不重新创建匿名函数范围内的变量。
var test = "Hi";
(function() {
test = "Bye"; // notice no "var", meaning it uses the existing variable
// Outputs "Bye"
console.log(test);
})();
// Outputs "Bye"
console.log(test);
我假设我无法修改函数。 – FullStackYeah
然后,你不能访问任何变量与本地范围内声明(当使用'var') – Archer
运行函数创建一个范围;在此范围内定义“再见”;并且这个范围从功能外部是不可见的。
如果您有权访问IIFE,那么您可以对其进行修改,以便将此变量导出到外部范围。
如果IIFE是在同一个跨域比你的代码命名函数里面,可以显示外部函数:
var toto = function() {
var test = "Hi";
(function() {
var test = "Bye";
// Outputs "Bye"
console.log(test);
})();
// Outputs "Hi"
console.log(test);
}
console.log(toto);
从这些案例
之外,没有什么可以做;通过设计。即使是功能代码显示的跨源限制,也是为了防止您访问不属于您的代码。聪明的人已经想到了这一点;我怀疑存在后门。
Yuup我知道但我试试找回门做:) – FullStackYeah
@FullStackYeah MITM –
摆脱'var' – epascarello
你不能没有全局或回调,这是整个点。另请参阅http://stackoverflow.com/questions/14373475/ –