gpt4 book ai didi

python - "safe_eval"真的安全吗?

转载 作者:太空狗 更新时间:2023-10-30 02:50:44 26 4
gpt4 key购买 nike

我正在寻找一个“安全”的 eval 函数,以实现类似电子表格的计算(使用 numpy/scipy)。

由于明显无法修复的安全问题,执行此操作的功能(rexec module)已从 Python 2.3 中删除。有几个第三方黑客声称这样做 - 我发现的最深思熟虑的解决方案是 this Python Cookbok recipe ,“安全评估”。

如果我使用这个(或类似的东西)来防止恶意代码,我是否相当安全,或者我是否坚持编写自己的解析器?有谁知道有更好的选择吗?

编辑:我刚刚发现 RestrictedPython ,它是 Zope 的一部分。欢迎对此提出任何意见。

最佳答案

我想取决于您对安全的定义。很多安全性取决于您传入的内容以及允许您在上下文中传递的内容。例如,如果传入一个文件,我可以打开任意文件:

>>> names['f'] = open('foo', 'w+')
>>> safe_eval.safe_eval("baz = type(f)('baz', 'w+')", names)
>>> names['baz']
<open file 'baz', mode 'w+' at 0x413da0>

此外,环境非常受限(不能传入模块),因此,不能简单地传入像 re 或 random 这样的实用函数模块。

另一方面,您不需要编写自己的解析器,只需为 python ast 编写自己的求值器即可:

>>> import compiler
>>> ast = compiler.parse("print 'Hello world!'")

这样,希望您可以实现安全导入。另一个想法是使用 Jython 或 IronPython 并利用 Java/.Net 沙盒功能。

关于python - "safe_eval"真的安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com