Javascript 数组构造函数";新数组();可以被恶意代码覆盖和替换,如何?
我们可以通过以下几种方式创建阵列:Javascript 数组构造函数";新数组();可以被恶意代码覆盖和替换,如何?,javascript,arrays,javascript-security,Javascript,Arrays,Javascript Security,我们可以通过以下几种方式创建阵列: var myArray = new Array(); 或: 第二种方法比新的Array()语法更安全,因为数组构造函数可能被覆盖,并可能被恶意代码替换 我在很多JavaScript书籍中都看到了上面几行,但我不明白Array构造函数如何被恶意代码覆盖和替换?我正在寻找一个例子,说明某人如何做到这一点,以便我能够了解问题的真实性。如果您在JS控制台上编写: [1,2,3] (就像那样)-你对此无能为力 对于旧浏览器来说,这并不准确 您可以通过以下方式重载阵列选
var myArray = new Array();
或:
第二种方法比新的Array()语法更安全,因为数组构造函数可能被覆盖,并可能被恶意代码替换
我在很多JavaScript书籍中都看到了上面几行,但我不明白
Array
构造函数如何被恶意代码覆盖和替换?我正在寻找一个例子,说明某人如何做到这一点,以便我能够了解问题的真实性。如果您在JS控制台上编写:
[1,2,3]
(就像那样)-你对此无能为力
对于旧浏览器来说,这并不准确
您可以通过以下方式重载阵列选择器:
Array=new函数(){…}
因此,当您通过Json(而不是jsonp)获得朋友列表时:
有人可能使用XSS/XSF攻击窃取您的好友列表
这里的事实是:如果你写[1,2,3],这里实际上有一个ctor在工作
因此,如果你访问一个提供数组响应的网站,他仍然可以保存你的列表。如果你在JS控制台上写:
[1,2,3]
(就像那样)-你对此无能为力
对于旧浏览器来说,这并不准确
您可以通过以下方式重载阵列选择器:
Array=new函数(){…}
因此,当您通过Json(而不是jsonp)获得朋友列表时:
有人可能使用XSS/XSF攻击窃取您的好友列表
这里的事实是:如果你写[1,2,3],这里实际上有一个ctor在工作
因此,如果你访问了一个提供数组响应的网站,他仍然可以保存你的列表。上面代码中的某个地方:
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"
正如您所看到的,如何初始化数组变量没有区别<代码>变量i=[]代码>只是较短的符号。上面代码中的某个地方:
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"
正如您所看到的,如何初始化数组变量没有区别<代码>变量i=[]代码>只是较短的符号。在今天的浏览器中,你对ctor无能为力。你说的ctor是什么意思?小弗雷迪是在他的网站上添加用户生成的未过滤html吗?坏孩子弗雷迪会受到惩罚的!如果您的代码可以被注入恶意代码,那么您要处理的问题比
Array()
@Jack更大。如果第三方库托管在不同的服务器上,并且它们被注入了恶意数组函数,该怎么办。不完全是你的问题,但又是你的问题。总之,机会很小。在今天的浏览器中,你对ctor无能为力。你说的ctor是什么意思?小Freddy是在他的网站上添加用户生成的未过滤html吗?坏孩子弗雷迪会受到惩罚的!如果您的代码可以被注入恶意代码,那么您要处理的问题比Array()
@Jack更大。如果第三方库托管在不同的服务器上,并且它们被注入了恶意数组函数,该怎么办。不完全是你的问题,但又是你的问题。总而言之,机会微乎其微。