XSS - 寻找对mootools请求的JSON.decode评论的解释

时间:2014-02-20 08:49:28

标签: javascript ajax mootools xss

所以我正在浏览Mootools docs for Request,并注意到最近发布的一条评论内容如下......

  

“请注意XSS漏洞:安全的默认值是假的,   这意味着JSON.decode(“alert(document.cookie)”)显示一个弹出窗口   !“

JSON.decode方法的文档说明了这一点:

  

JSON方法:解码

     

将JSON字符串转换为JavaScript对象。

     

语法:

     

var object = JSON.decode(string[, secure]);

     

参数:

     

string - (字符串)要评估的字符串。

     

secure - (boolean,optional:defaults to false)如果设置为true,则检查是否存在任何危险语法,如果找到则返回null。

     

返回:( object)由JSON字符串表示的对象。

因此,根据文档,我很明显JSON.decode方法默认设置为“不安全”。我的问题是什么(如果有的话)与XSS有关,以及我帖子顶部的评论是否有价值。假设您在前端使用Mootools,并且您信任您正在进行AJAX调用的地址,那么这怎么可能成为XSS安全漏洞呢?

http://mootools.net/docs/core/Utilities/JSON

2 个答案:

答案 0 :(得分:2)

这里的问题是eval().

自从“回到日子里”之后,在JSON.parse()生效之前Mootools used eval返回解析后的JSON。所以这里的问题与discussed here about eval()相同。

如果您只为现代浏览器编写代码,请选择vanilla JSON.parse()。如果您需要将浏览器下载到IE6,那么 Mootools为您完成工作™Mootools为开发人员提供强大的工具,如果您不想使用eval,请打开secure选项/参数

答案 1 :(得分:1)

在阅读了文档页面并学习了关于XSS的所有内容后,在我看来,仅使用前端javascript引入XSS漏洞的唯一方法是使用该代码执行“类似服务器”的决策。我所指的是所谓的DOM-Based XSS,你的前端js代码从URL查询字符串或其他一些未连接的资源中获取参数,并尝试在没有正确清理的情况下对该输入执行某些操作和/或事先逃避。

这实际上与eval()无关,而且与您如何根据响应/请求设计“网站体验”有关。避免使用XSS的方法是确保您的代码永远不会加载/发送它不能信任的任何内容。 eval()只是一个功能。