在下面的视频中,在时间标记 21:40,Microsoft PDC 演示者说重要的是所有 JSON 都被包装,因此它不是顶级数组:
https://channel9.msdn.com/Events/PDC/PDC09/FT12
未包装的顶级阵列的风险是什么?
我应该如何检查我是否易受攻击?我从 3rd 方购买了许多组件,并有外部供应商开发我的代码。
在下面的视频中,在时间标记 21:40,Microsoft PDC 演示者说重要的是所有 JSON 都被包装,因此它不是顶级数组:
https://channel9.msdn.com/Events/PDC/PDC09/FT12
未包装的顶级阵列的风险是什么?
我应该如何检查我是否易受攻击?我从 3rd 方购买了许多组件,并有外部供应商开发我的代码。
这是因为几年前 Jeremiah Grossman 发现了一个影响 gmail的非常有趣的漏洞。有些人通过使用无法解析的 cruft解决了这个漏洞(bobince 先生在此页面上的技术描述非常棒。)
微软之所以谈论这个是因为他们还没有修补他们的浏览器(还)。(编辑: Edge 和 IE 10/11 的最新版本已经解决了这个问题。)Mozilla 认为这是 json 规范中的一个漏洞,因此他们在Firefox 3 中修补了它。就记录而言,我完全同意 Mozilla,这很不幸,但每个 Web 应用程序开发人员都必须保护自己免受这个非常模糊的漏洞的影响。
我认为这是因为可以重新定义 Array() 构造函数。然而,这个问题并不是数组独有的。
我认为攻击(或一种可能的方式)是这样的:
function Array(n) {
var self = this;
setTimeout(function() {
sendToEvilHackers(self);
}, 10);
return this;
}
浏览器(或某些浏览器)使用该构造函数进行[n, n, n]
数组表示法。因此,CSRF 攻击可以利用您与银行的公开会话,点击带有<script>
标签的已知 JSON URL以获取它,然后便证明您拥有它。