Python: 使 eval 安全
- 论坛
- Python: 使 eval 安全
10 浏览
Python: 使 eval 安全
我想要在Python中实现一个“计算器API”的简单方法。
目前我并不太关心计算器将支持的精确功能集。
我希望它能接收一个字符串,比如 "1+1"
,并返回一个结果字符串,比如我们的例子中的 "2"
。
有没有办法让 eval
在这种情况下安全使用?
首先,我会这样做:
env = {} env["locals"] = None env["globals"] = None env["__name__"] = None env["__file__"] = None env["__builtins__"] = None eval(users_str, env)
这样调用者就不能操纵我的局部变量(或查看它们)。
但是我确定我在这里忽略了很多东西。
eval
的安全问题可修复吗?还是有太多细微的细节需要注意才能使其正常工作?