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

猜你喜欢

转载自agilestyle.iteye.com/blog/2367009