问题:我正在使用eval从我的WebMethods之一解析JSON返回值。
我不想添加jquery-json,因为传输量已经很大。 所以我用eval解析JSON返回值。
现在有传言说这是不安全的。为什么?
没有人可以修改JSOn的返回值,除非他们破解我的服务器,在这种情况下,我会有一个更大的问题。
如果他们在本地执行此操作,那么JavaScript只会在浏览器中执行。
所以我没有看到问题出在哪里。
有没有人可以通过这个具体的例子揭示这一点?使用JavaScript eval解析JSON
function OnWebMethodSucceeded(JSONstrWebMethodReturnValue)
{
var result=eval('(' + JSONstrWebMethodReturnValue + ')')
... // Adding result.xy to a table
}
应该注意的是,Crockford的JSON包含两个其他库(除了主json.js和json2.js)以及不使用'eval'的不同解析模式。他们是'json_parse.js'和'json_parse_state.js',可以在这里找到(https://github.com/douglascrockford/JSON-js/) – 2010-12-08 06:48:43
@Camilo:非常好,谢谢! – 2010-12-08 10:02:32
可以说,我没有来自外部来源的输入,我可以安全地使用eval吗? – 2013-02-08 19:57:22