使用虚拟文件系统在沙盒中运行 nodejs



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

如何使之成为可能?

Docker是沙盒处理事物的好方法。

你可以运行

docker run --network none python:3

从您的节点.js服务器。查看 docker 运行的其他开关,以插入尽可能多的安全漏洞。

关键是,你从节点.js服务器运行docker命令,并通过stdin传递用户的python代码。

现在,如果你的节点.js服务器在一台机器上,而 sendbox 应该在另一台机器上运行,你告诉 docker 使用DOCKER_HOST环境变量连接到另一台机器。

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

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

相关内容

  • 没有找到相关文章

最新更新