我正在构build一个应用程序,使用户能够从浏览器编写代码。 一旦代码被写入,我将内容保存到我的networking服务器上的用户特定的文件夹中。
我也想添加一个function,用户可以用自己select的语言来运行代码:ruby,python等…
很明显,我不想只是运行代码,因为用户可能有危险的代码,可能会从networking服务器中删除敏感文件。
我怎样才能构build一个安全的系统,每个用户都有自己的定制环境来运行他们所写的代码,用他们的偏好语言呢?
也许,安全地做到这一点的唯一方法就是在虚拟机或模拟器中运行代码。 在同一个用户下和/或在chroot下运行仍然是非常危险的:可能存在本地安全问题,使用户能够获得root权限并退出chroot。
如果你相信你可以保持你的系统是最新的,没有什么重要的东西(像客户卡号的数据库),那么看看这个项目: http : //sandbox.sourceforge.net/
请注意:对于编译语言,您还需要在某种types的沙箱中进行编译。 #include /etc/passwd是你不希望用户拥有的最简单的东西。
您不指定您正在使用的服务器平台。
假设你正在使用Apache,你应该使用suexec模块来调整不同用户的目录权限。
虚拟机是关键。 每个人最好从另一个分开。 只有一个更好的解决scheme:不要给他们任何访问。