为了提供有关数据分析的交互式示例,我想嵌入一个交互式python shell。它不一定必须是真正的 Python shell。应为用户提供可在shell中执行的任务。这类似于现有的教程,例如,http://www.codecademy.org,但我想与这些解决方案不提供的库一起工作,据我所知。
为了在网站上获得真正的shell,我想到了两种方法:
我找到了像http://www.repl.it这样的项目,但似乎很难包含像SciPy,NumPy和Pandas这样的必要库。此外,必须验证用户输入,我不确定这是否适用于我找到的那些shell。
我可以通过Web应用程序将命令传递给我服务器上的Python安装,但是我害怕在外来的任意代码上使用eval()
。 Python有安全模式吗?我找到了http://www.pypy.org。虽然它们提供了Python沙箱,但不幸的是,它们不支持我需要的库。
或者,我想过只是嵌入一个“假shell”,我构建它来复制我想要解释的函数的行为。当然,这会导致更多的工作,因为我必须编写一个虚假的界面,但现在似乎是唯一的可能性。
我希望这个问题不太通用;我正在寻找一个好的HTML / JS库来帮助我在我的网站上放置一个假shell,或者一个库/服务/软件,它可以嵌入一个安装了所需模块的真正的Python shell。
答案 0 :(得分:4)
没有办法安全地运行不受信任的Python; Python的动态特性允许有太多方法来突破您可能想到的任何保护层。
相反,在新虚拟机上运行每个会话,正确锁定(防火墙,非特权用户),在经过一段时间限制后关闭。新会话将获得一个新的,干净的虚拟机。
这可以隔离任何可能运行并试图突破沙箱的恶意代码;一个好的虚拟机由处理器从主机操作系统硬件隔离,这是Python专用层永远无法实现的。
答案 1 :(得分:3)
此过程有时称为沙盒。 你可以找到一些good information on the python wiki
基本上有三种选择:
您可能还想查看Restricted Python,这对于非常有限的环境特别有用,但安全性取决于其配置。
最终,您选择的解决方案将取决于您想要限制的内容: