首页 新闻 会员 周边

关于eval()的安全问题

0
悬赏园豆:5 [已解决问题] 解决于 2017-02-06 21:16

都说eval()是不安全的,还有new Function()也是不安全的,啥脚本注入来着。但是该如何解决这种不安全的问题呢?我搜索了一下,貌似是啥脚本库之类的,但是大部分都是在分析他们的使用方法。所以请哪位研究过的大神,分析下该如何解决安全问题,或者说提供个脚本库参考下,^_^

流炎飞雪的主页 流炎飞雪 | 初学一级 | 园豆:6
提问于:2017-02-04 22:55
< >
分享
最佳答案
0

只要你不使用eval执行用户输入的内容,问题不大。你先了解下XSS攻击。

收获园豆:5
幻天芒 | 高人七级 |园豆:37175 | 2017-02-05 08:46

感谢你的回答,但是像楼上我所说的,要转换字符串为json的情况呢?

流炎飞雪 | 园豆:6 (初学一级) | 2017-02-05 18:45

@流炎飞雪: 考虑使用JSON.parse转换

幻天芒 | 园豆:37175 (高人七级) | 2017-02-05 22:53

@幻天芒: 感谢你的回答,这个有考虑过,但是会发现是不兼容IE7以下浏览器的,我看过jquery实现的兼容,在不兼容的情况下,也是通过new Function()来实现的。

流炎飞雪 | 园豆:6 (初学一级) | 2017-02-06 09:52

@流炎飞雪: 可控的eval,new Function,是可以使用的。如果是IE低版本,你可以使用json2

幻天芒 | 园豆:37175 (高人七级) | 2017-02-06 21:09

@幻天芒: 感谢你的回答

流炎飞雪 | 园豆:6 (初学一级) | 2017-02-06 21:16
其他回答(1)
0

怎么个不安全法.讲清楚点

吴瑞祥 | 园豆:29449 (高人七级) | 2017-02-05 00:06

首先感谢你的关注,至于如何不安全,我也没有见过,但是不管是网上还是哪里,都会有所耳闻,以我个人的理解应该是这样的。

比如说以下是从php所提供的接口中获取的数据信息。

var jsonStr = '{"a":1,"b":2,"c":function(){alert(1);}()}';

其中的值都是用户提供的信息。

为了追加到页面,显示为用户,那么得转换成json形式。

var json = eval("("+jsonStr+")");  //或者 var json = new Function("return"+jsonStr)();

结果是页面会alert(1);

换句话说,如果那个函数中不是alert(1);是打开某个链接,或者运行啥程序之类的,当然具体的操作我是不懂了,只是类似的。这样就感觉会不安全了,页面可以有用户操作了。

以上是我的理解。

支持(1) 反对(0) 流炎飞雪 | 园豆:6 (初学一级) | 2017-02-05 18:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册