1

我已经看过一些解释 IIS 下 PHP 安装的教程,因为 FastCGI 建议将 open_basedir 设置为指向网站内容所在的文件夹或网络路径。

当我在我的应用服务器上设置 open_basedir 时,管理文件时出现以下错误:警告:open_basedir 限制生效。文件(C:\Windows\Temp\php92E7.tmp)不在允许的路径内:(C:\inetpub\wwwroot)

我知道我可以在 inetpub 下设置一个临时目录,但我不明白为什么使用 windows\temp 会出现问题。

PHP 作为 IIS 上的 FastCGI 是否存在任何安全漏洞,需要 open_basedir 限制?如果不是,为什么推荐它?还是没有必要?是否可以使用具有正确权限的 AppPool Identity 获得 open_basedir 优势?

4

1 回答 1

2

设置 open_basedir(不仅在带有 IIS 的 Windows 上,而且在任何 Web 服务器上的任何平台上)是一种限制应用程序可以读取、写入和包含的文件的安全措施。

PHP 可以从文件系统的任何位置包含任何带有 PHP 代码的文件,这并不是一个真正的安全漏洞,但它是一个特性。例如,您可能在 Web 根目录上有一些文件,而在 Web 根目录之外有其他文件(Web 服务器无法访问它们,但 PHP 可以访问它们)。

但是,如果您的程序存在缺陷,您的用户可能能够读取或包含(甚至写入)不属于您的应用程序的文件。这些可能是系统文件、用户上传的文件或其他应用程序的文件。这就是为什么 open_basedir 很重要。

注意,在设置 open_basedir 之后,还要设置其他 PHP 函数的路径(例如,upload_tmp_dir),因为它们也应该在 open_basedir 路径下。

于 2014-10-12T17:57:55.803 回答