是否可以限制PyPy中的内置函数?

时间:2013-04-15 08:51:26

标签: pypy

根据PyPy docs,“内置名称始终引用内置模块,而不是有时在CPython中的字典。分配给< strong> builtins 没有效果。“例如在CPython中:

>>> eval("__import__('os').system('clear')", {'__builtins__':{}})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name '__import__' is not defined

在PyPy中,它运行它没有错误。是否有另一种限制内置可用的方法?

1 个答案:

答案 0 :(得分:2)

不,很久以前就决定我们不提供这个。也许我们现在可以重新考虑它,但请注意它只会给人一种虚假的安全感。即使您使用{'__builtins__':{}}的技巧,在第三方提供的字符串上调用eval()也永远不会安全。请参阅Python: make eval safe