我正在做一个小项目,即托管类似于ideone.com的网站,即托管一个在线编译器,它将编译并运行作为输入提供的代码。我正在使用ROR作为后端部分。< / p>
我所做的是在文本框中输入的代码存储在字符串中,我在ruby中使用系统调用来创建文件,我将字符串存储在该文件中。我也存储了输入另一个文件中的代码。我正在使用系统调用来编译和运行文件并将输出存储到字符串中并将其发送到前端部分。
我对上面实现的方法有两个问题 1)它一次只能用于单个用户。不知道如何为多个用户实现,如果是,那么用户数量的限制是多少? 2)任何人都可以放置恶意代码并损害系统。我必须对环境进行沙盒处理,使其在隔离的环境中运行。我该怎么做?
程序运行无限循环不是问题因为我已经限制了执行时间。我正在使用反引号来执行shell脚本。我正在为C实现它,如果我成功解决了所有问题,我会扩展它用于其他语言。
答案 0 :(得分:2)
为了不让人们擦除硬盘驱动器,安装spambots等,您需要在虚拟机内运行所有代码,以保护主机。这也解决了用户问题,因为您可以为每个用户启动虚拟机并在运行代码后将其分解。但是,这可能会在您的服务器上使用大量资源。
我有兴趣了解ideone.com的作用。我怀疑一切都在客户端的浏览器中运行,这显然更安全,因为你可以使用你的服务器来保存他们的代码,但实际上并没有运行它。如果它在浏览器中运行,那么无论如何它都是沙箱。你确定你不想这样做吗?我从来没有听说有人让人们上传代码然后在系统服务器上运行它。似乎有点冒险。