Json字符串的Javascript eval()注入全局范围函数

时间:2012-04-26 03:52:20

标签: javascript json parsing eval

我有一个完全正确的Json字符串,它通过使用eval函数在函数的方法中解析。完成后,由于某种未知原因,全局定义方法的第一行作为数组参数之一注入内部。

要解析的字符串是:

{ “ID”:1, “名称”: “object1”, “体积”:15, “重量”:100}

解析线是:

var decoding = eval('('+ encoded +')');

使用eval()函数解码后,我在内部得到了“互补”属性decode ['replaceNode'],其中包含另一个文件中包含的全局范围函数。

我认为它是一个bug,但是因为firefox和safari都发生了同样的事情,所以似乎不太可能。更可能是我误解了eval的目的。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

不要使用eval。

Eval不安全,可以让攻击者执行任意代码。改为使用JSON library

答案 1 :(得分:0)

暂时搁置使用eval() ...

的陷阱

我无法再现您描述的副作用。

猜测,你已经加载了一个覆盖eval()的库来“扩充”eval返回的任何结果。