您将需要使用多层操作系统功能。在防火墙虚拟机中以受限用户身份运行编译器和生成的程序,并限制对操作系统的访问。
如果一切顺利,VM中的操作系统将阻止他们执行格式化驱动器之类的操作。但如果没有,并且他们获得管理员访问权限,那么它是一个从外部对其进行限制的一次性虚拟机这一事实意味着管理员访问实际上并不值得。您可以简单地重新映像VM并重新开始。 (事实上,你可能想要将它成像,即使一切正常也只是作为预防措施。)
有了两层保护,你应该非常安全。
现在,在VM中,我可能只是运行Linux。即使服务器是Windows机器,在VM内部也可以安装最小的Linux发行版并使用 setrlimit 这样可以抑制进程内存和CPU时间。但是,如果你也想要Windows,那就是工作对象 https://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx 达到类似的资源限制。只需确保运行编译器和程序的用户帐户也对驱动器具有严格限制的权限(在任一操作系统上)。
setrlimit
当然,您也可以在没有VM的主机操作系统上执行此类操作...但是如果出现问题,您就不能轻易放弃并替换整个操作系统,管理员访问可能会绕过您的其他防火墙或CPU限制。我肯定会使用这两层。
顺便说一句,尽管有vm层,但是不要忘记仍然使用正确的XSRF和XSS护理,就像任何其他Web表单一样。