我想知道Codepad.org网站的原理。 (在线C编译器的原理)
我认为原则遵循这些步骤。
用户提交C代码。
网站发送到服务器上安装的GCC。
GCC编译代码。
GCC返回字符串并发送到网站(Webserver)
Webserver将字符串返回给用户。
这些步骤是对的吗? 那么,如何保护恶意代码,如从服务器删除所有文件?
答案 0 :(得分:1)
代码执行由基于geordi的主管处理。策略是在ptrace下运行所有内容,不允许或忽略许多系统调用。编译器和最终可执行文件都在chroot jail中执行,具有严格的资源限制。主管是用Haskell编写的。
此外:
<强>妄想强>
当您的应用 远程代码执行时,您必须预料到安全问题。我没有依赖chroot和ptrace主管,而是采取了一些额外的预防措施:
管理程序进程在虚拟机上运行,这些虚拟机具有防火墙,因此无法进行传出连接。
运行虚拟机的计算机也严重防火墙,并定期从源图像中恢复。