微软之所以这样说,是因为他们尚未修补浏览器。(Edge和IE10/11的最新版本已解决了该问题。)Mozilla认为这是json规范中的漏洞,因此他们在Firefox3中对其进行了修补。作为记录,我完全同意Mozilla,它的不幸之处在于,但每个Web应用程序开发人员都必须自我保护,以免受这种非常晦涩的漏洞的影响。
我认为这是因为Array()构造函数可以重新定义。但是,这个问题并不是数组真正的唯一问题。
我认为攻击(或一种可能的方式)是这样的:
function Array(n) {
var self = this;
setTimeout(function() {
sendToEvilHackers(self);
}, 10);
return this;
}
浏览器(或某些浏览器)使用该构造函数来[n, n, n]
表示数组。因此,CSRF攻击可以利用您与银行的公开会话,用<script>
标签访问已知的JSON URL 进行提取,然后欺骗您的所有权。