1

我正计划构建一个 Web 应用程序,让用户编写自己的代码,在浏览器中编译和测试它,比如phpFiddleGolang 的 tour

  • 我知道保护这样的服务器会很困难。
  • 我知道我可以尝试通过限制对 VM 标准库的访问来保护它(我可能会这样做),但我知道这不足以保护各种攻击,所以它根本不是真正的保护.

这是我正在考虑的处理方式:

  • 主从配置,从服务器只能由主服务器访问。从服务器将运行一个服务器,该服务器将根据请求在 chroot 监狱中生成编译器进程,并施加超时,因此如果应用程序运行时间超过指定时间,它将终止应用程序。
  • 使用用户绑定的 chroot,我可以很好地控制用户可以访问的内容(特别是因为我的目标语言没有很多依赖项),但我确信仍然存在粗糙的边缘,例如:
    • 如何防止不受信任的程序运行其他独立进程?有没有一种好方法可以拒绝一个进程来分叉或产生任何其他进程?
    • 我可能忽略了哪些其他可能的攻击路线?

我进行了一些搜索以找到好的基于 linux 的沙箱,虽然它们看起来很不错,但对我来说似乎有点矫枉过正,因为我的从服务器本身可以被认为是一个沙箱,因为我会将它们专用编译/运行请求的代码的任务。这就是为什么我在这里而不是在 Serverfault 中问这个问题,因为它似乎与编程相关而不是与服务器配置相关。

4

0 回答 0