JSON hijacking

原创转载请注明出处:http://agilestyle.iteye.com/blog/2367009

 

Issue

JSON劫持利用一些浏览器的功能,允许脚本覆盖核心语言的对象setter的例程,它允许恶意JavaScript插入逻辑,使其监控服务器返回的JSON消息。

 

在一个JSON劫持攻击中,攻击者将覆盖的JavaScript数组传递给它的构造函数来窃取信息。攻击者然后嵌入域被劫持的JSON端点在HTML脚本标记。浏览器将把跨域资源作为一个JavaScript文件和试图呈现,导致调用数组构造函数的攻击者的版本,导致跨领域的信息暴露。

 

Solution

为了防止JSON劫持:

  • 使用application/json MIME类型返回json响应。(避免使用text/html)
  • 不要使用数组作为最高级别的JSON数据传输结构。使用JSON Object替代。例如,如果您需要返回[1,2,3,4,5],返回 '{"result":[1,2,3,4,5]}'
  • 如果你的客户端库允许它(例如Dojo),使用评论过滤JSON格式和使用mime类型text/json-comment-filtered。例如:[1,2,3,4,5] 的json返回被转换为 '/*[1,2,3,4,5]*/' 这种形式

Reference

http://cwe.mitre.org/data/definitions/352

https://dojotoolkit.org/reference-guide/1.10/dojo/contentHandlers.html

http://www.cnblogs.com/hyddd/archive/2009/07/02/1515768.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值