我有一个完全正确的Json字符串,它通过使用eval函数在函数的方法中解析。完成后,由于某种未知原因,全局定义方法的第一行作为数组参数之一注入内部。
要解析的字符串是:
{ “ID”:1, “名称”: “object1”, “体积”:15, “重量”:100}
解析线是:
var decoding = eval('('+ encoded +')');
使用eval()函数解码后,我在内部得到了“互补”属性decode ['replaceNode'],其中包含另一个文件中包含的全局范围函数。
我认为它是一个bug,但是因为firefox和safari都发生了同样的事情,所以似乎不太可能。更可能是我误解了eval的目的。
提前感谢您的帮助。
答案 0 :(得分:4)
Eval不安全,可以让攻击者执行任意代码。改为使用JSON library。
答案 1 :(得分:0)
暂时搁置使用eval()
...
我无法再现您描述的副作用。
猜测,你已经加载了一个覆盖eval()
的库来“扩充”eval返回的任何结果。