我如何避免PHP上升到某个目录?

时间:2012-11-22 02:18:19

标签: php linux apache dedicated-server

不久前我升级到专用服务器,为了让我的成本更高,我决定在服务器上向我认识的人(朋友,家人)租用一些空间。我认识的一些人有一些负责网站开发的人,我想保护自己免受未经授权访问我或我租给的任何其他人。

最让我担忧的一个案例是PHP通过从根目录访问../来访问其他用户或我。

例如,他们可以执行以下操作: foreach(glob('../*/*.*') as $some_file){unlink($some_file);} ,这将删除兄弟用户的所有文件。

如何避免人们做这类事情?

2 个答案:

答案 0 :(得分:2)

这听起来像是一个可以通过系统管理解决的问题。

  • 编辑php.ini文件,限制open_basedir中的值
  • 确保将您的用户分配到不同的群组
  • chmod你的主目录og-wx(例如744,740,700等......)
  • 运行多个apache服务器实例,可能在不同的用户/组下

这实际上取决于您希望投入多少精力以及安全性需要多强大。


http://www.php.net/manual/en/ini.core.php#ini.open-basedir http://wiki.apache.org/httpd/RunningMultipleApacheInstances

答案 1 :(得分:0)

你应该考虑dctrucker发布权限,并确保apache进程,如果你运行php与mod_php或php进程,如果你在fast-cgi上运行它没有权限更改权限。如果安全性是您关注的话,我不建议使用base_opendir方法,因为那时可以使用ini_set来覆盖它(因此如果使用该方法,您也应该禁用ini_set)。