为了账号安全,请及时绑定邮箱和手机立即绑定

JSON.parse与eval()

JSON.parse与eval()

湖上湖 2019-10-08 11:21:36
我的Spider Sense警告我,使用eval()解析传入的JSON是一个坏主意。我只是想知道JSON.parse()-我假设它是JavaScript的一部分,而不是浏览器特定的功能-是否更安全。
查看完整描述

4 回答

?
收到一只叮咚

TA贡献1821条经验 获得超5个赞

如果使用,您将更容易受到攻击eval:JSON是Javascript的子集,而json.parse仅解析JSON,而eval这却为所有JS表达式敞开了大门。


查看完整回答
反对 回复 2019-10-08
?
青春有我

TA贡献1784条经验 获得超8个赞

所有JSON.parse实现最有可能使用eval()


JSON.parse基于Douglas Crockford的解决方案,该解决方案eval()在497行使用。


// In the third stage we use the eval function to compile the text into a

// JavaScript structure. The '{' operator is subject to a syntactic ambiguity

// in JavaScript: it can begin a block or an object literal. We wrap the text

// in parens to eliminate the ambiguity.


j = eval('(' + text + ')');

的优点JSON.parse是它可以验证参数是否为正确的JSON语法。


查看完整回答
反对 回复 2019-10-08
?
手掌心

TA贡献1942条经验 获得超3个赞

JSON.parse()和eval()接受的内容有所不同。尝试评估:


var x =“ {\” shoppingCartName \“:\” shopping_cart:2000 \“}”


eval(x)         //won't work

JSON.parse(x)   //does work


查看完整回答
反对 回复 2019-10-08
  • 4 回答
  • 0 关注
  • 425 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号