eval()是个功能很强大的函数,这同时也意味着通常你驾驭不了它。一般来说你用到这个函数说明你的设计在哪里出错了。
仅仅有几个例外可以考虑运用 eval():
- 实现某种类似于「用户自定义脚本」的功能——一般只能用于内部工具,绝对安全的情况下
- 远程执行,从网络中获取主控节点下发的代码然后直接执行——不是木马一般不需要这个功能
eval()的主要问题是引入严重的安全漏洞,没有任何方法能够限制这个漏洞的危害,因为谁也不能保证某个输入一定不会来自恶意用户。
在 Python 中,一行代码往往能做很多很恐怖的事情,比如
__import__("os").system("rm -rf /*")