允许用户在服务器上执行python代码

我知道这是
technically a duplicate question,但我相信它是有效的,因为7年前提交的原始问题和Python / Web安全已经走了很长一段路.

我想构建一个Web应用程序,允许用户输入python代码(通过Ace编辑器包),然后使用服务器上的python解释器在浏览器中执行它.我不能使用pypy.js,因为我需要使用numpy,pandas和matplotlib.基本上我想创建自己的Codecademy(我是一名教师,并希望为我的学生创建类似Codecademy的课程).令人遗憾的是,Codecademy在某一时刻提到的创造性课程已经落空了.

我正在使用Flask,但如果更容易,我可以学习Django.

允许我的用户运行python代码而不允许他们影响程序的其余部分或访问文件以外的文件的最佳方法是什么?

最佳答案 在过去的7年中,Python或Web安全性没有根本性的变化.允许用户在您的服务器上运行代码仍然是自杀.

但是,改变的是Docker等轻量级VM解决方案的可用性.

有关这方面的工作原理,请查看
https://civisanalytics.com/blog/engineering/2014/08/14/Using-Docker-to-Run-Python/.我不会在这里引用这个解决方案,因为你会发现其他的例子,即使这个例子消失了.

但是,这可能比在服务器上直接运行用户代码更安全,但是

>用户代码仍在您的服务器上运行.可能无法逃脱泊坞窗图像,但恶意用户仍可以上传例如.拒绝服务工具并从您的服务器开始攻击.或者嗅探您的网络流量或其他什么.
>有或至少可能有办法打破码头图像.

对于像教室这样的受控环境,这些风险可能是可以接受的,但对于公共服务器,您需要大量的安全性知道如何进一步锁定服务器和docker镜像并过滤可用的python功能.

点赞