安全的Python解释器?

时间:2009-11-08 01:20:05

标签: python security virtual-machine interpreter

是否有安全的Python解释器?

想象一下,您可以在计算机上运行的Python VM会限制操作。 没有文件可以打开,没有系统调用等。 它只是将stdin转换为stdout,可能是文本处理+数学等。

是否存在这样安全的Python VM?

8 个答案:

答案 0 :(得分:7)

我知道没有这种公开发布的“安全解释器”(显然谷歌有一个它在App Engine中使用的,虽然有一些不同于你想要的限制,例如某些文件可以以只读方式打开)。但是,有一些声称,例如, here,虽然我无法验证它们。考虑到pypy开发团队的高质量和声誉,他们Pypy Python in a Sandbox {{3}}可能是最值得尝试的人(他们很难做出未经证实的声明)。

答案 1 :(得分:2)

您可以使用SecurityManager在JVM上运行Jython,它允许您指定允许/不允许的操作。

答案 2 :(得分:2)

在某种意义上,您不需要修改Python来限制执行。只需查看codepad.org,一个可以粘贴代码(使用Python和其他语言)的pastebin,并让它运行并显示输出。代码在非常有限的环境中运行,但这只是操作系统配置。 (Example paste

答案 3 :(得分:1)

您可以在具有受限权限的.NET应用程序域中运行IronPython。

这肯定适用于Windows,可能/可能在Mono(我真的不能说)。

您需要编写一个嵌入IronPython解释器并将脚本传递给它的小程序。

关于嵌入书籍Iron Python in Action的章节中的第一个示例显示了编写这样的启动器。

我不记得它是否涵盖appdomains,但该信息应该在网上的某个地方。

答案 4 :(得分:1)

我是本科生,在我的第一年,我们被教授python。我们有这些称为“CodeLabs”的东西,必须定期提交。它的工作原理是提出一个问题并要求学生将他们的答案输入文本框并在某些测试用例上运行该代码并检查其返回值

有一天,codelabs网站(turingscraft.com)无法访问,因为有人决定运行一个无休止的while循环并在其中调用os.fork()。

对于turingscraft.com的管理员来说,这显然是一个问题。但是,他们后来发现了一种限制学生访问此类命令的方法。

如果我是你,我会查询有关他们网站的信息。也许他们发布了一些关于这个以及如何解决它的信息

答案 5 :(得分:0)

您可以随时查看源代码并制作自己的Python风格。如果有足够的人需要它,它就没有时间启动并运行。

答案 6 :(得分:-1)

我最近一直在玩这个。我的要求包括Python 3.x,它立即将Jython和IronPython等解决方案从表中删除。无论如何我都会犹豫不决,因为我从不信任用户模式语言虚拟机。

在这种情况下,就我的目的而言,迄今为止最好的解决方案是将其完全从解释器中取出并在一个强力锁定的容器(OpenVZ或类似物)中运行。然而,这对问题起了作用(虽然不是完全虚拟化的大锤),如果你必须运行真正大量的孤立解释器,可能就不可行了。

但是,一个好处是,因为它不依赖于任何特定解释器的安全性,所以您可以在环境中使用任何您想要的任意语言 - 您不必将自己绑定到Python或集合可用于JVM或.NET / Mono的语言/实现。

答案 7 :(得分:-1)

安全性不仅仅是操作系统的工作吗?

我的意思是,创建一个对文件等具有受限访问权限的用户。然后让vm只运行这些权利。

或许我说的是胡说八道。我不是系统管理员或安全专家,但我倾向于使用为其制作的工具来做事。