我想创建一个Web应用程序,该应用程序将允许用户上传一些C代码,并查看其执行结果(该代码将在服务器上编译)。用户不受信任,这显然会带来巨大的安全隐患。
因此,我需要为应用创建某种沙箱。在最基本的级别上,我想将对文件系统的访问限制在某些指定的目录中。我无法直接使用chroot jails,因为Web应用程序未以特权用户身份运行。我想设置监狱的suid可执行文件是一个选择。
上载的程序会很小,因此它们应该快速执行(最多几秒钟)。因此,我可以在预设的超时后终止该进程,但是如何确保它不会产生新的进程?或者如果我做不到,那么杀死整个pgid是一种可靠的方法吗?
除了“根本不做”之外,什么是最好的方法?:)我还错过了哪些其他明显的安全问题?
FWIW,该网络应用将使用Python编写。
连同其他建议,您可能会发现这很有用。
http://www.eelis.net/geordi/
这是http://codepad.org/about,codepad.org的有关页面。