扫码关注官方订阅号
书上说eval()函数提供了访问js编译器的机会是什么意思?为什么会产生糟糕的代码?
闭关修行中......
在JavaScript秘密花园中,专门提到了的
为什么不要使用 eval
在其实可以看出凡是使用eval的地方,我们都能用其他方法代替,而且eval有比较严重的安全问题,它会执行任何传给它的方法
好像大部分语言都有eval这个函数,且有经验的开发人员都不建议使用。首要一点是,不可控。不可控会带来两点问题:1是不安全,这个大家都知道。2是职责/功能不可控,违背设计原则。至于性能问题,我研究得浅,也只能参考楼上各位的回答了
http://segmentfault.com/q/1010000002973097
http://segmentfault.com/q/1010000002426734
这里不是很多吗?
会运行编译器,影响性能。
弱化安全性,因为被授予太多权利
问题不仅是快或慢
一是安全问题, 然后eval在一些情况下会造成内存泄漏
eval 的用法比较奇葩,用起来很麻烦,说不定就遇到坑了。
然而实际上,我们不经意间最常用的就是 eval
比如 script 标签, settimeout, setinterval,new Function, es6 的 import 等等。
数据和代码混在一起,就容易出漏洞,就像你把模板和控制器混在一起,就容易被xss。
性能和安全问题~~
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
在JavaScript秘密花园中,专门提到了的
为什么不要使用 eval
在其实可以看出凡是使用eval的地方,我们都能用其他方法代替,而且eval有比较严重的安全问题,它会执行任何传给它的方法
好像大部分语言都有eval这个函数,且有经验的开发人员都不建议使用。首要一点是,不可控。不可控会带来两点问题:1是不安全,这个大家都知道。2是职责/功能不可控,违背设计原则。至于性能问题,我研究得浅,也只能参考楼上各位的回答了
http://segmentfault.com/q/1010000002973097
http://segmentfault.com/q/1010000002426734
这里不是很多吗?
会运行编译器,影响性能。
弱化安全性,因为被授予太多权利
问题不仅是快或慢
一是安全问题, 然后eval在一些情况下会造成内存泄漏
eval 的用法比较奇葩,用起来很麻烦,说不定就遇到坑了。
然而实际上,我们不经意间最常用的就是 eval
比如 script 标签, settimeout, setinterval,new Function, es6 的 import 等等。
数据和代码混在一起,就容易出漏洞,就像你把模板和控制器混在一起,就容易被xss。
性能和安全问题~~