【问题标题】:Run nodejs in sandbox with virtual filesystem使用虚拟文件系统在沙箱中运行 nodejs
【发布时间】:2020-01-12 08:08:13
【问题描述】:

我正在做一个在线 python 编译器的项目。当用户发送 python 时,服务器将执行它。我想要做的是,创建一个带有虚拟文件系统的沙箱,在其中执行该脚本,并且该沙箱应该远离真实服务器的文件系统,但 nodejs 应该能够控制该沙箱的标准输入和标准输出。

如何实现?

【问题讨论】:

  • 请举个例子。

标签: node.js sandbox virtualfilesystem


【解决方案1】:

Docker 是沙盒处理的好方法。

你可以跑

docker run --network none python:3

来自您的 node.js 服务器。看看其他switches of docker run 尽可能多地塞上安全漏洞。

关键是,你运行 docker 命令from your node.js server and pass the user's python code via stdin

现在,如果你的 node.js 服务器在一台机器上,而发送箱应该在另一台机器上运行,你告诉 docker 使用 DOCKER_HOST environment variable 连接到另一台机器。

Docker 容器将软件封装在一个完整的文件系统中,该文件系统包含它运行所需的一切:代码、运行时、系统工具、系统库——基本上是您可以安装在服务器上的任何东西。这保证了它始终以相同的方式运行,无论它运行在什么环境中。

这可能值得一读https://instabug.com/blog/the-difference-between-virtual-machines-and-containers/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多