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

时间:2018-10-31 03:23:14

标签: python security sandbox execution

我正在编写一个需要执行不受信任的python代码的应用程序。 (即类似于家庭作业提交服务器的应用,其中学生的输入不受信任)

对此进行思考,我的第一个念头是,通过禁用语言的文件I / O功能(因此,将代码限制为仅使用stdin / stdout),程序不会对系统造成太大损害。 / p>

这是正确的吗?还是我没有想到的攻击媒介?

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

2 个答案:

答案 0 :(得分:2)

在docker容器中运行它们!

与安全性一样,没有灵丹妙药。您的里程可能会有所不同。

答案 1 :(得分:0)

我不会使用任何python沙箱方法在您的计算机上执行任意代码,因为安全专家多次演示了它们是如何实现转义的。 Escaping the python sandbox

我建议使用权限受限的新用户在docker容器中运行代码。

Hardening Linux Containers

最后,您可以尝试将python代码解析为AST,然后降低级别以确保不存在危险动作。

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