我正在做一个小项目,就是托管一个类似于ideone.com的站点,ie托管一个在线编译器,它将编译并运行作为输入的代码,我使用ROR作为后端部分。
我所做的是将输入到textbox中的代码存储到字符串中,我使用ruby中的系统调用来创建一个文件,我将字符串存储在file.Similary中,我还将代码的输入存储在另一个file.Again中,我使用系统调用编译和运行文件,并将输出存储到字符串中,并将其发送到前端部分。
对于上述的实现方法,我有两个问题:( 1)它只适用于time.Any上的单个用户,想法是如何为多个用户实现,如果是的话,用户数量的限制是什么?( 2)任何人都可以放置恶意代码并危害系统,我必须对环境进行沙箱,使其能够在孤立的环境中运行。我该怎么做呢?
程序运行无穷大循环并不是一个问题,因为我已经限制了执行时间,我使用倒勾来执行shell脚本,我正在为C实现它,如果我成功地解决了所有的问题,我会把它扩展到其他语言。
发布于 2015-07-17 09:13:14
为了不让人们清除您的硬盘驱动器,安装垃圾邮件等,您将需要运行虚拟机内的所有代码,以保护主机。这也解决了用户问题,因为您可以为每个用户旋转一个虚拟机,并在运行代码后将其向下旋转。但是,这可能会占用服务器上的大量资源。
我想知道ideone.com是做什么的。我怀疑所有东西都在客户机的浏览器中运行,这显然要安全得多,因为您可以使用您的服务器来保存它们的代码,而不是实际运行它。如果它在他们的浏览器中运行,无论如何它都是沙箱。你确定你不想这样做吗?我从未听说过有人允许人们上传代码,然后在系统服务器上运行它。似乎有点疯狂的风险。
https://stackoverflow.com/questions/31472025
复制相似问题