python - 如何最有效、最安全地模拟 Python shell?

标签 python shell numpy pandas javascript

为了提供有关数据分析的交互式示例,我想嵌入一个交互式 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 ”,我构建它来复制我想要解释的函数的行为。当然,这会导致更多的工作,因为我将不得不编写一个假接口(interface),但目前看来这是唯一的可能性。

我希望这个问题不要太笼统;我正在寻找一个好的 HTML/JS 库来帮助我在我的网站上放置一个假的 shell,或者一个可以嵌入一个真正的 Python shell 并安装了所需模块的库/服务/软件。

最佳答案

没有办法安全地运行不受信任的 Python; Python 的动态特性允许使用太多方法来突破您可能会想到的任何保护层。

相反,在一个新的虚拟机上运行每个 session ,正确锁定(防火墙,非特权用户),在硬时间限制后关闭。新 session 获得一个新的、干净的虚拟机。

这将您与可能运行并试图突破沙箱的任何恶意代码隔离开来;一个好的虚拟机通过处理器与主机操作系统进行硬件隔离,这是仅 Python 层永远无法实现的。

关于python - 如何最有效、最安全地模拟 Python shell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22069625/

相关文章:

python - Cython:内存 View 的大小属性

python - 迭代字典时出现奇怪的运行时错误

linux - 在子目录中搜索相同的文件并替换所有子目录中的字符串

linux - 监控文件的 Bash 脚本

linux - 通过 Jenkins 在 shell 中执行 "pkill"- 构建失败

python - numpy 数组减法,怎么来的?

Python 单元测试(使用 SQLAlchemy)不写入/更新数据库?

python - 为什么 python statistics.mean() 返回一个 int 类型,而不是 float

python - 从 SymPy 符号定义函数

python - 如何在集群上启用 MPI 的应用程序中使用 scipy.weave.inline?