如何最有效、最安全地模拟Python shell?
为了提供有关数据分析的交互式示例,我想嵌入一个交互式python shell。它不一定是一个真正的Python shell。应向用户提供可在shell中执行的任务。这类似于现有的教程,如上所示,但据我所知,我希望使用这些解决方案不提供的库 为了在网站上获得真正的外壳,我想到了两种方法:如何最有效、最安全地模拟Python shell?,python,shell,numpy,pandas,javascript,Python,Shell,Numpy,Pandas,Javascript,为了提供有关数据分析的交互式示例,我想嵌入一个交互式python shell。它不一定是一个真正的Python shell。应向用户提供可在shell中执行的任务。这类似于现有的教程,如上所示,但据我所知,我希望使用这些解决方案不提供的库 为了在网站上获得真正的外壳,我想到了两种方法: 我发现了这样的项目,但似乎很难包含必要的库,如SciPy、NumPy和Pandas。此外,必须验证用户输入,我不确定这是否适用于我找到的shell 我可以通过web应用程序将命令传输到我服务器上的Python安
- 我发现了这样的项目,但似乎很难包含必要的库,如SciPy、NumPy和Pandas。此外,必须验证用户输入,我不确定这是否适用于我找到的shell
- 我可以通过web应用程序将命令传输到我服务器上的Python安装,但我害怕在外来的任意代码上使用
。Python有安全模式吗?我找到了。尽管它们提供了Python沙箱,但不幸的是,它们不支持我需要的库eval()
- 或者,我想只嵌入一个“假shell”,我构建它是为了复制我想要解释的函数的行为。当然,这将导致更多的工作,因为我将不得不编写一个假的接口,但现在看来这是唯一的可能性
我希望这个问题不要太笼统;我正在寻找一个好的HTML/JS库,它可以帮助我在我的网站上放置一个假的shell,或者一个库/服务/软件,它可以嵌入一个安装了所需模块的真实Python shell。没有办法安全地运行不受信任的Python;Python的动态特性允许使用太多的方法来突破您可能想到的任何保护层 相反,在一个新的虚拟机上运行每个会话,该虚拟机被正确地锁定(防火墙、无特权用户),您在一个困难的时间限制后关闭。新会话将获得新的、干净的虚拟机
这会将您与任何可能运行并试图突破沙箱的恶意代码隔离开来;好的虚拟机是由处理器与主机操作系统隔离的硬件,这是纯Python层永远无法实现的。此过程有时称为沙箱。 你可以找到一些 基本上有三种选择:
- 机器级机制(如Martijn Pieters建议的VM)
- 操作系统级机制(如or)
- 自定义解释器,例如pypy(,如您所提到的),或者,您可以在其中使用Java安全管理器或小程序机制
- 文件系统访问?阻止所有内容,还是允许某些目录
- 网络访问,如套接字
- 任意系统调用