防止应用程序在服务器端引入有害更改

这只是我在PHP中的一个小小的爱好项目。 我使用0sites.org服务器(Linux操作系统)。 我基本上是尝试模仿http : //www.codepad.org,http://www.ideone.com的function。 我正在尝试为一些语言提供在线编译器/解释器。

到目前为止,我可以使用PHP exec(..)编译/运行这些应用程序,但是我真的不确定如何去除有害的函数调用,如C / C ++ system(..) 。 此外,我不知道如何防止任何networking访问。

我也计划添加更多的语言。 要实现每种语言特有的东西是很困难的。 我想知道是否有办法在更一般的层面上阻止事物。

我曾经想过手动parsing代码,并注释掉有问题的代码行。 但是由于通常有不止一种方式来做事情,这可以被打破。 😛

任何想法/build议/指针? 我将非常感激同样的。 🙂

(PS:这只是一个业余爱好项目,我只想尽可能地使它更专业。)

Solutions Collecting From Web of "防止应用程序在服务器端引入有害更改"

您可能确实需要操作系统支持来创建这些沙箱。 任何涉及过滤源代码的方法都会遇到安全问题,并且将是一个噩梦来维护。

试想一下:即使你完全正确地实现了你的解析器,PHP的解析器中也可能存在一个错误,所以它的解析方式略有不同。 这可以很容易地让别人运行系统,执行等,并完全绕过你的过滤。

你没有偶然发现一个爱好项目; 你偶然发现一个研究项目。

编辑1

我可以想到,在没有OS支持的情况下,最简单的方法就是修补PHP(但是您将在C中工作,而不是PHP),或者在PHP中重新实现PHP。 但请记住这是多么的疯狂。 你确定你知道无数的图书馆可能会做什么,特别是当有趣的论点? 例如,您可能想要禁止写入文件,但允许MySQL。 除了MySQL有SQL命令写入任意文件。

http://codepad.org/about表示完成了操作系统支持。 也许你可以让自己成为PHP的ptrace模块,并以类似的方式实现你的。

一个建议是确保将运行这些脚本的用户将不能读/写除了它将运行的文件夹之外的任何东西。 而且,应用程序本身不应该被该用户写入。