为不受信任的Python代码创建安全环境

3

我正在编写一款应用程序,需要执行不受信任的Python代码(例如类似于作业提交服务器的应用程序,学生输入是不可信的)。

考虑到这一点,我的第一个想法是禁用语言的文件I/O功能(从而限制代码只能使用stdin/stdout),程序无法对系统造成太大的危害。

这种做法正确吗?或者还有其他攻击方式我没有考虑到吗?

是否可以通过某种Python标志或编译器选项传递来隔离代码?


多年前,曾经尝试将这样的环境作为标准库的一部分进行实现。但由于似乎连Python开发人员也无法真正确保其安全性,因此该尝试被放弃了。请参阅https://docs.python.org/2/library/rexec.html。 - Michael Butscher
3个回答

7

1

我不会使用任何Python沙盒方法在您的计算机上执行任意代码,因为安全专业人员已经多次演示了它们是可逃脱的。 逃脱Python沙盒

我建议在具有受限权限的新用户的Docker容器中运行代码。

增强Linux容器安全性

最后,您可以尝试将Python代码解析为AST,并向下遍历级别以确保不存在危险操作。

我的选择是使用Docker容器,最好是带有受限访问权限的Alpine版本。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接