我正计划构建一个Web应用程序,该应用程序将允许用户编写自己的代码,在浏览器中进行编译和测试,例如phpFiddleGolang的导览

  • 我知道保护这样的服务器将很困难。
  • 我知道我可以尝试通过限制对VM的标准库的访问来保护它(也许我会),但是我知道这还不足以保护所有类型的攻击,因此它根本不是真正的保护。

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

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

我进行了一些搜索以找到基于Linux的好的沙箱,尽管它们看起来不错,但对我来说似乎有点过大了,因为我的从属服务器本身可以被视为沙箱,因为我将竭诚奉献它们。编译/运行请求的代码的任务。 这就是为什么我在这里而不是在Serverfault中问这个问题的原因,因为它似乎与编程有关的多于与服务器配置有关的多。

  ask by Waneck translate from so

本文未有回复,本站智能推荐: