我正在考虑开发一种编程测试站点,用户可以编写PHP代码,然后在服务器上执行它来测试输出。我知道您希望始终阻止用户执行代码,但是是否有一种方法可以设置代码以使系统不受损害?
或者这只是打开了太多的安全漏洞?
发布于 2011-09-16 21:27:16
这只是一个想法。我只考虑了几分钟。但是其中一种可能的方法是让你的web应用程序将代码作为字符串,并将其发送到虚拟机进行处理。
这样,您就可以防止web应用程序提供站点的其他功能,使其不受用户执行PHP的任意影响。
可以设置虚拟机,以便运行的PHP脚本在运行的文件夹之外没有访问权限,除了接收来自主机的请求并将数据返回到主机之外,也不能访问网络的任何部分。您甚至可以将VM冻结在状态中,以便在重新启动时撤销对它所做的任何更改。
再说一次,这只是一个想法。可能有一些我看不到的坏处。但是,要记住的一件关键事情是,您需要确保主机上的PHP服务器在任何时候都不会执行发送到VM或从VM返回的代码。
发布于 2011-09-19 17:52:30
为了提高安全性,您必须做一些事情:
最后,把安全当作洋葱来考虑。在任何一层都要尽力保护你的系统。如果某一层出现安全漏洞,底层应阻止攻击者.
发布于 2011-09-16 21:23:59
我认为这是可行的,但如果你想以任何安全的方式去做的话,你的工作肯定会被淘汰掉。这本质上就是任何提供PHP的web主机所做的,任何愿意向他们扔点钱的人都会这样做。
您的不同之处在于,它一般只对任何人开放,除非您计划限制对经过身份验证的用户的访问。
从PHP / apache一直到操作系统,您都想了解如何增强您的系统。但是,有许多事情是由一个硬化的系统阻止的,这将限制测试的有用性。
如果你真的这么做的话,我会在你的代码页面上强烈推荐一种人工验证/反机器人机制,比如Captcha / reCaptcha。
如果你对系统安全性不太熟悉,那么我就不会亲自去碰它。
https://serverfault.com/questions/312367
复制相似问题