2014-02-20 54 views
1

所以我一直在寻找通过MooTools的文档了解更多关于JSON.decode评论,发现有点最近评论张贴读取以下...XSS - 寻找解释为mootools的请求

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

的JSON.decode方法的文档这样说:

JSON方法:解码

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

语法:

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

参数:

- (串),以评估的字符串。

secure - (布尔值,可选:默认为false)如果设置为true,则检查是否存在危险语法,如果发现任何危险语法,则返回null。

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

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

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

回答

1

阅读完文档页面和学习XSS所能提供的所有内容后,在我看来,引入单独使用前端JavaScript的XSS漏洞的唯一方法就是使用该代码执行“服务器式”决策。我所指的是DOM-Based XSS,您的前端js代码从URL查询字符串或其他一些未附加资源中获取参数,并尝试使用该输入执行某些操作,但未事先进行正确的清理和/或转义。

虽然这与eval()确实没有任何关系,并且与您如何根据回复/请求设计“网站体验”有关。避免XSS的方式是确保您的代码不会加载/发送任何不能信任的内容。 eval()只是一个功能。

+1

'+ 1'为您的答案。无论如何,只是供参考__ [今天去掌握](https://github.com/mootools/mootools-core/commit/2769c9d6f3d7ac8421a57f453ecccd1b7f360bfc)__这个问题的更正。它将与MooTools 1.5一起发货,预计在未来几天发布。 – Sergio

+0

酷!很高兴看到MooTools的前端仍然活着 - 我一直认为该项目已经转移到Node.js和MooTools Prime – Funktr0n

2

这里的问题是eval().

由于 “回天”,前JSON.parse()来生活Mootools的used eval返回解析JSON。所以这里的问题与discussed here about eval()相同。

如果你只是为现代浏览器编写代码,去香草JSON.parse()。如果你需要浏览器到IE6,那么Mootools为你做这个工作 ™ Mootools为开发者提供了强大的工具,如果你不想使用eval,打开secure选项/参数。

+0

我想我只是还没有看到这可能被认为是一个XSS漏洞......任何时候都不能从浏览器中得到任何用户eval()任何东西?我唯一能看到的情况就是如果你向一个不受信任的源(或者以某种方式被入侵的源)发出了一个AJAX请求,并且它返回了一些危险的代码。但是,如果你不相信你的源代码或者远程服务器受到了某种程度的破坏,我认为你不能对此做任何事情......我想你应该避免为你的用户带来灾难,尽管你可以避免它。仍然不认为这是真正的XSS。 – Funktr0n

+1

@Funktron就像塞尔吉奥已经指出的问题是,MooTools后备使用eval来“解析”JSON字符串。现在想象一下,您将序列化并反序列化用户输入或URL参数,从而导致XSS漏洞。 – n3on

+0

除非您以某种方式更改服务器上的数据,否则不会导致发生漏洞。就像我之前说过的那样,任何人都可以在他们的浏览器中评估他们想要的任何东西......你没有任何控制权 - 你从来没有做过。 – Funktr0n