doc_root 已经限制了 apache/php 脚本文件夹的位置。
open_basedir 更好地用于限制脚本对文件夹的访问
这些文件夹不包含脚本。可以是 doc_root 的子文件夹,如 php 文档示例 doc_root/tmp,但最好是在单独的文件夹树中,如 ~user/open_basedir_root/。如果 doc_root(或 include_path)和 open_basedir 重叠,有害脚本可能会修改其他脚本。
如果 apache/php 无法浏览 open_basedir 中的脚本,即使恶意脚本将更多不良脚本上传到那里,它们也无法被浏览(执行)。
还应该注意,许多 shell 执行函数实际上是绕过 open_basedir 限制的一种方法,如果安全要求严格的文件夹访问控制,则应禁用这些函数。如果允许通过这些函数执行本机操作系统 shell 命令,有害脚本可以执行 unix/windows 版本的“delete */*/*/*”。操作系统 shell 命令同样可以通过蛮力将文件复制到 doc_root 树中,来绕过重定向限制和上传文件限制。如果可以将它们作为一组或一类函数禁用就好了,但如果出于安全原因需要,仍然可以逐个禁用它们。
PS。目前存在一个错误,即如果执行任何 include 或 require 语句,open_basedir 设置为 docroot/tmp 的文档设置将不起作用。目前,如果包含的 php 文件既不在 open_basedir 树中也不在 doc_root+include_path 树中,则 include 会失败。这与安全相反。
这意味着任何包含的 php 文件都必须在 open_basedir 中,因此容易受到有害脚本和 Injektor 等 php 病毒的攻击。