允许用户在

2024-04-26 22:04:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想构建一个web应用程序,允许用户输入python代码(通过Ace编辑器包),然后使用服务器上的python解释器在浏览器中执行它。我不能使用pypy.js公司因为我需要使用numpy、pandas和matplotlib。基本上我想做我自己的codeademy(我是一名教师,想为我的学生创建codeademy类课程)。可悲的是,Codecademy曾经提到的“创建课程”这件事,现在却一无所获。在

我用的是烧瓶,但我可以学Django,如果那样更容易的话。在

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


Tags: 代码用户服务器web应用程序浏览器pypy编辑器
1条回答
网友
1楼 · 发布于 2024-04-26 22:04:05

在过去的7年里,Python和web安全没有发生根本性的变化。允许用户在您的服务器上运行代码仍然是自杀行为。 然而,改变的是轻量级虚拟机解决方案(如docker)的可用性。 关于如何工作的示例,请看一下https://civisanalytics.com/blog/engineering/2014/08/14/Using-Docker-to-Run-Python/。我不会在这里引用这个解决方案,因为你会发现其他的例子,即使这一个消失了。在

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

  • 用户代码仍在服务器上运行。可能无法逃离docker映像,但恶意用户仍然可以上载拒绝服务工具,并从您的服务器发起攻击。或者嗅探你的网络流量什么的。在
  • 有或者至少有办法打破docker的形象。在

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

相关问题 更多 >