码迷,mamicode.com
首页 > Web开发 > 详细

JSON.parse()和eval()的区别

时间:2017-04-07 13:33:49      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:var   常用   mem   tty   ring   can   class   span   val   

在jshint中会报出val can be harmful.

上网找到:

json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?

JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的。

比如下面的字符串:

var str = ‘alert(1000.toString())‘;
eval(str);
JSON.parse(str);

用eval可以解析,并且会弹出对话框,而用JSON.parse()则解析不了。 其实alert并没有什么坏处,可怕的是如果用恶意用户在json字符串中注入了向页面插入木马链接的脚本,用eval也是可以操作的,而用JSON.parse()则不必担心这个问题。

注意:某些低级的浏览器尚不支持JSON.parse(),可以到 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下载。

 

来自:http://outofmemory.cn/code-snippet/1741/JSON-parse-eval-differentiate

JSON.parse()和eval()的区别

标签:var   常用   mem   tty   ring   can   class   span   val   

原文地址:http://www.cnblogs.com/shanqingkang/p/6677623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!