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 病毒的攻击。