我正在尝试创建一个服务器,该服务器编译并运行用户提交的代码。如何在服务器端运行可执行文件输出(从代码编译,不可靠),而又不影响我的代码库(二进制可执行文件本身)?
泊坞窗在某种程度上会有用吗?如果是,怎么办?
仅供参考,我正在使用微服务架构。然后转到该服务的服务器端开发(代码运行器)。
答案 0 :(得分:1)
运行不可靠代码的最好方法是隔离它,当对恶意软件进行逆向工程时,我们会做很多事情。由于使用的是Docker,因此需要采取一些预防措施,而使用虚拟机则不需要这些预防措施。
最安全的方法是使用另一个Docker容器,仅用于编译,执行和执行所需的任何其他操作。
让我们以一个应用程序为例,该应用程序由用户发送代码,然后我们将其与期望的输出进行比较,如Codeforces这样的编程竞赛。
diff output expected_output
这样,与用户发送的代码相关的所有内容都被隔离了,因此更加安全。
一些注意事项:
答案 1 :(得分:1)
[什么是从服务器上的用户运行不受信任的可执行文件的最佳方法?
一点也不。
沙盒格斗困难。尝试使用完全满足您需求的游乐场。
或者:根据您的需要重新启用游乐场。 https://blog.golang.org/playground可能会帮助您入门。
请记住,禁止使用危险的软件包,例如不安全的,运行时,os / exec以及来自网络的所有内容。