允许用户注入和运行php代码的最佳方式

Tom*_*zyk 9 php web-services code-injection

我一直在思考允许用户在网站上注入代码并在Web服务器上运行代码的想法.这不是一个新想法 - 许多网站允许用户在线"测试"他们的代码 - 例如http://ideone.com/.

例如:假设我们有一个包含<textarea>元素的表单,其中该用户输入他的代码然后提交它.服务器读取POST数据,在被ob _*()输出缓冲处理程序包围时保存为PHP文件和require().捕获的输出呈现给最终用户.

我的问题是:如何正确地做到这一点?我们应该考虑的事情[和可能的解决方案]:

  • 安全,用户不允许做任何邪恶的事,
  • 稳定性,用户不允许在(true){}时杀死webserver提交
  • 性能,服务器在可接受的时间内返回答案,
  • 控制,用户可以做任何匹配以前的点.

我更喜欢面向PHP的答案,但也欢迎一般的方法.先感谢您.

ctc*_*rry 7

我会想到这个问题在Web服务器的上下一层.有一个非常无特权,监禁,chroot的独立进程来运行这些上传的PHP脚本,然后启用或不启用PHP功能并不重要,它们将根据权限和缺乏访问权限而失败.

有一个父进程监视上面提到的"worker"进程已经运行了多长时间,如果它太长,就把它杀死,并向最终用户报告超时错误.

显然,有很多实现细节可以解决如何在浏览器请求之外异步运行这个系统,但我认为它将提供一种非常安全的方式来运行不受信任的PHP脚本.