Javascript XSS-正在寻找对JSON.decode for mootools请求的注释的解释

Javascript XSS-正在寻找对JSON.decode for mootools请求的注释的解释,javascript,ajax,mootools,xss,Javascript,Ajax,Mootools,Xss,所以我在查看Mootools文档以获取请求,并注意到最近发布的一条评论,内容如下 “注意XSS漏洞:安全的默认值为falsy, 这意味着JSON.decode(“alert(document.cookie)”)会显示一个弹出窗口 !” JSON.decode方法的文档说明如下: JSON方法:解码 将JSON字符串转换为JavaScript对象 语法: var object=JSON.decode(string[,secure]) 论据: string-(string)要计算的字符串 secur

所以我在查看Mootools文档以获取请求,并注意到最近发布的一条评论,内容如下

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

JSON.decode方法的文档说明如下:

JSON方法:解码

将JSON字符串转换为JavaScript对象

语法:

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

论据:

string-(string)要计算的字符串

secure-(boolean,可选:默认为false)如果设置为true,则检查是否存在任何有害语法,如果发现任何语法,则返回null

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

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

这里的问题是

自从“回到过去”,Mootools开始返回解析后的JSON。所以这里的问题和


如果您只为现代浏览器编写代码,请选择香草。如果您需要将交叉浏览器向下扩展到IE6,那么Mootools将为您完成这项工作™ Mootools为开发人员提供了强大的工具,如果您不想使用eval,请打开
secure
选项/参数。

在阅读了几页文档并了解了有关XSS的所有知识后,我认为,仅使用前端javascript引入XSS漏洞的唯一方法是使用该代码执行“类似服务器”的决策。我指的是调用的内容,即前端js代码从URL查询字符串或其他未连接的资源获取参数,并尝试对该输入执行某些操作,而无需事先进行适当的清理和/或转义


这实际上与
eval()
无关,而是与您如何设计响应/请求方面的“站点体验”有关。避免XSS的方法是确保您的代码从不加载/发送任何它不信任的内容。
eval()
只是一个函数。

我想我还是不明白这怎么会被视为XSS漏洞……任何用户在任何时候都不能从浏览器中评估()任何内容吗?我唯一能看到的是,如果您向不受信任的源(或以某种方式被破坏的源)发出AJAX请求它返回了一些危险的代码。但是如果你不信任你的源代码,或者远程服务器被某种方式破坏了,我不认为你真的能做些什么……我想如果你能避免的话,你应该避免给你的用户带来灾难。仍然不认为它真的是XSS。@Funktron-Like Sergio已经指出了这个问题em是指MooTools回退使用eval来“解析”“JSON字符串。现在假设您使用它序列化和反序列化用户输入或URL参数,这可能导致XSS漏洞。除非您以某种方式更改服务器上的数据,否则它不会导致漏洞。就像我之前说的,任何人都可以在浏览器中评估他们想要的任何东西。。。您对此没有任何控制权——您从来没有控制过。@Funktron我不确定您是否理解XSS漏洞的含义:不需要从服务器获取JSON数据。它可以来自任何地方,问题不在于用户自动执行某些东西。问题是用户被欺骗了,因为他的浏览器执行了一些他不知道的东西。然后,攻击者可以操纵该“特定”用户的页面,从而导致非常严重的问题。对于用户来说,你作为网站提供商,似乎在对他这样做。对不起,这一切都很神秘。您所解释的是,用户被“欺骗”并执行了一些他不知道的操作,这造成了“非常严重的问题”。请给我一个具体的例子,如果我的服务器没有被破坏,或者设计得不考虑安全性,那么在前端代码中使用eval()将导致XSS漏洞。您发送给我的链接没有提供任何此类示例。
+1
获取您的答案。不管怎样,我想纠正一下这个问题。它将与MooTools 1.5一起发布,预计将在未来几天发布。酷!很高兴看到前端的MooTools仍然存在,而且运行良好——我曾一度认为项目已经转移到Node.js和MooTools Prime