我们可以通过以下几种方式创建数组:
var myArray = new Array();
或者:
var myArray = [];
第二种方法比新的Array()语法更安全,因为Array构造函数可以被覆盖并可能被恶意代码替换。
我在许多JavaScript书籍中都看到过以上几行,但我不明白如何覆盖Array
构造函数并用恶意代码替换?我正在寻找一个人如何做到这一点的例子,这样我才能理解这个问题的实际情况。
答案 0 :(得分:1)
如果你在JS控制台上写字:
[1,2,3]
(就像那样) - 你无能为力。
对于旧浏览器来说,这是不准确的。
您可以通过以下方式重载数组ctor:
Array = new function (){... }
所以,当你通过Json(而不是jsonp)得到你的朋友名单时: -
有人可能会使用XSS / XSF攻击并窃取您的朋友列表。
事情是这样的事实:如果你写[1,2,3] - 实际上有一个ctor在这里工作。
所以如果你到了一个做阵列响应的网站 - 他仍然可以列出你的名单。
答案 1 :(得分:1)
上面代码中的某处:
Array.prototype.forEach = function (e){
console.log("something wrong there");
return(e);
};
以下代码中的某处:
var i = [1,2,3,4,5];
i.forEach(function(e){
console.log(e);
});
输出:
>"something wrong there"
如您所见,初始化数组变量没有区别。 var i = [];
只是更短的符号。