攻击过程有点类似于csrf,只不过csrf只管发送http请求,但是json-hijack的目的是获取敏感数据。
一些web应用会把一些敏感数据以json的形式返回到前端,如果仅仅通过cookie来判断请求是否合法,那么就可以利用类似csrf的手段,像目标服务器发送请求,以获得敏感数据。
攻击者可以在虚假页面中,加入如下标签:
<script src="www.bank.com/userinfo"></script>
加入www.bank.com/userinfo会以json数组的形式返回一些用户的敏感信息,那么script标签会自动解析json数组,生成对应的js对象。然后再通过重新定义对象的构造函数,来触发自己的恶意代码。
详细的利用方式可以参考:
http://www.cnblogs.com/hyddd/archive/2009/07/02/1515768.html
不过要注意的是,目前网上说的利用方式中,都用到了Object.prototype.__defineSetter__这个函数,亲自测试过在当前的新版本chrome和firefox中都已经失效了。还有另外一种是通过callback的方式来修改读取json数据,不过个人觉得这个就要和具体的应用实现方式有关了。