的SPOJ的是一个网站,列出了编程难题,然后允许用户编写代码来解决这些难题,并上传自己的源代码服务器。服务器然后编译该源代码(或者解释它是否是解释型语言),针对代码运行一系列单元测试,并验证它是否正确地解决了该问题。架构到沙箱的编译和执行不可信的源代码
什么来实现这样的事情最好的办法 - 你怎么沙箱用户输入,使其不能妥协的服务器?你应该使用SELinux,chroot还是虚拟化?所有三个加上我还没有想到的其他东西?
如何应用可靠的通信,同时也确保了结果不受损害监狱外的结果吗?例如,如何防止应用程序将大量无意义的数据写入磁盘或其他恶意活动?
我真正好奇,因为这似乎只是一个非常危险的类型的应用程序来运行的。
“并因此降低您的成本。” - 考虑到降低成本,为什么不使用[Ideone API(http://ideone.com/api)?它已经准备好并免费供小型非商业项目使用。 – kuszi 2011-04-08 08:45:18
@ŁukaszKuszner,我指的是商业部署的持续成本。一旦您的成本按每小时美元计算,开发成本变得微不足道;) – saschabeaumont 2011-04-11 00:31:16