gpt4 book ai didi

linux - 从服务器上的用户运行不受信任的可执行文件的最佳方法

转载 作者:IT王子 更新时间:2023-10-29 02:00:39 25 4
gpt4 key购买 nike

我正在尝试创建一个编译并运行用户提交的代码的服务器。如何在服务器端运行可执行输出(从代码编译,不可靠),而不影响我的代码库(二进制可执行文件本身)?

docker 在这里会有用吗?如果"is",如何?

仅供引用,我使用的是微服务架构。并进行此服务的服务器端开发(代码运行程序)。

最佳答案

运行不可靠代码的最佳方法是将其隔离,我们在对恶意软件进行逆向工程时经常这样做。由于您使用的是 Docker,因此您需要采取一些在使用虚拟机时不需要的预防措施。

最安全的方法是让另一个 Docker 容器仅用于编译、执行和执行所需的任何其他操作。

让我们以用户发送代码的应用程序为例,我们为他运行它,并将其与预期输出进行比较,就像在 Codeforces 这样的编程竞赛中一样。 .

  1. 主应用接收代码
  2. 主应用程序创建一个特殊的 Docker 容器
  3. 主应用程序将代码和表示预期输出的文件一起发送到特殊容器
  4. 特殊容器编译、执行并将代码输出打印到文件并使用diff output expected_output
  5. 特殊容器将差异结果(基本上是真或假)发送到主应用程序

这样所有与用户发送的代码相关的东西都是隔离的,所以更安全。

一些注意事项:

  • 为了安全起见,运行用户代码的容器应该使用低权限用户运行它
  • 如果您需要从代码中获取输出,而不仅仅是从 diff 中获取 true 或 false,那么您需要确保他的代码不会生成恶意软件作为输出,您将其保存在文件中并放入主应用服务器
  • 从用户代码中屏蔽线程库、网络、文件系统访问等,有助于提高安全性

关于linux - 从服务器上的用户运行不受信任的可执行文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56485631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com