【问题标题】:How to make safe online compiler? [closed]如何制作安全的在线编译器? [关闭]
【发布时间】:2017-07-21 07:18:07
【问题描述】:

我想做一个简单的在线编译器,从浏览器获取代码,发送到服务器,编译,返回浏览器执行结果。

恐怕有人会从代码或类似的东西中执行format C:\。有什么办法可以预防吗?

附:我正在寻找 Windows 解决方案。

【问题讨论】:

    标签: windows security d sandbox


    【解决方案1】:

    您需要使用多层操作系统功能。以受限用户身份在防火墙虚拟机中运行编译器和生成的程序,并限制对操作系统的访问。

    如果一切顺利,VM 中的操作系统将阻止它们执行任何操作,例如格式化驱动器。但是,如果没有,并且他们获得了管理员访问权限,那么它是一个一次性虚拟机,并从外部对其进行了限制,这意味着管理员访问实际上并不值钱。您可以简单地重新映像 VM 并重新开始。 (实际上,即使一切正常,您也可能想对其进行成像,以防万一。)

    有了这两层保护,你应该很安全。

    现在,在 VM 中,无论如何我都可能只运行 Linux。即使服务器是 Windows 机器,您也可以在 VM 内安装最小的 linux 发行版并使用 setrlimit 等来限制进程内存和 cpu 时间。但如果你也想要 Windows,作业对象 https://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx 会达到类似的资源限制。只需确保您运行编译器和程序的用户帐户也对驱动器具有严格限制的权限(在任一操作系统上)。

    当然,您也可以在没有虚拟机的情况下在主机操作系统上执行此类操作...但是如果出现问题,您不能轻易放弃并更换整个设备,并且管理员访问可能会绕过您的其他防火墙或cpu限制。我肯定会使用这两层。

    顺便说一句,尽管有 vm 层,但不要忘记仍然使用适当的 XSRF 和 XSS 护理,就像任何其他 Web 表单一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多