有没有适合嵌入式脚本语言的“安全”Python子集?

15 投票
13 回答
5314 浏览
提问于 2025-04-15 11:34

在我创建的许多Python应用程序中,我经常会做一些简单的模块,这些模块里只包含一些常量,用作配置文件。此外,因为配置文件实际上是一个Python代码文件,所以我可以根据调试级别等情况,添加一些简单的逻辑来改变变量。

虽然这种方法在内部应用中效果很好,但我对将这样的应用发布到外部有些担心,因为我怕有人会不小心或者故意在文件里添加破坏性代码。对于将Python作为嵌入式脚本语言使用,情况也是一样。

有没有一种被认为是“安全”的Python子集可以用来嵌入呢?我知道安全性这个问题比较主观。不过,Java小程序和Flash都有明确的安全沙箱。我在想,Python是否有类似的规则?

编辑:我问这个问题并不是因为配置文件的方式,而是因为我想在一个新应用中实现一些脚本或插件机制,不希望插件或脚本能够,比如说,删除文件。这超出了应用程序应该能做的范围。

13 个回答

4

不,Python没有一个可以安全使用的、适合生产环境的子集。之前有一些沙盒模块,但因为存在问题而被淘汰了。

最好的办法是自己创建一个解析器,或者通过系统调用钩子和一个受限制的账户来隔离Python进程。

有些人可能会提到PyPy,但它还没有完成。

4

pypy项目提供了沙箱功能,具体内容可以查看这个链接:http://doc.pypy.org/en/latest/sandbox.html

10

这里有几个链接,可以让你了解你面临的挑战:

还有一个已经停止更新的谷歌代码项目,地址是 http://code.google.com/p/sandbox-python/

撰写回答