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

时间:2016-06-13 00:06:34

标签: python security

我知道这是technically a duplicate question,但我相信它是有效的,因为原始问题是在7年前提交的,而Python /网络安全从那时起已经走了很长的路。

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

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

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

1 个答案:

答案 0 :(得分:1)

过去7年来,Python或网络安全没有根本性的变化。允许用户在您的服务器上运行代码仍然是自杀。 但是,改变的是Docker等轻量级VM解决方案的可用性。 有关这可行的示例,请查看https://civisanalytics.com/blog/engineering/2014/08/14/Using-Docker-to-Run-Python/。我不会在这里引用这个解决方案,因为你会找到其他的例子,即使这个例子消失了。

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

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

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