我正在编写一个旨在允许用户提供代码的协作项目。用户将能够扩展类,添加功能等,并将代码提交回服务器以便定期执行。
有没有一种安全的方法来执行用户的PHP代码?一种万无一失的消毒方法?无限循环怎么样?或者我应该提供不同的脚本语言?
答案 0 :(得分:6)
DocumentRoot的JailRoot
SafeMode ON允许访问文件 仅限于特定目录
使用每个USER MPM限制系统
apache进程的资源
为memmory设置安全的php.ini设置 limit和max_execution_time
正如Saggi Malachi指出的那样,这是非常实验性的,你必须监控服务器上的操作,并有后备szenarios,例如。 cronjobs观看加载平均值,如果loadaverage高于阈值停止apache和sendmail。
其他好主意是编译自己的php并拒绝访问可能被用户“利用”的php函数。
答案 1 :(得分:0)
可以使用safemode保护用户访问或更改文件。
保护无限循环需要设置php解释器生成网站的一些时间。 set_time_limit
您还需要阻止用户与外部服务器通信,以避免将其用作垃圾邮件发件人。 allow_url_fopen
可能还有很多其他更严重的问题。这不是一件容易的事。
答案 2 :(得分:0)
也许我可以使用服务器端Javascript代替SpiderMonkey
听起来更安全!