【问题标题】:Why use open_basedir with PHP as FastCGI on IIS?为什么在 IIS 上使用 open_basedir 和 PHP 作为 FastCGI?
【发布时间】:2014-12-04 09:53:28
【问题描述】:

我看过一些解释 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 优势?

【问题讨论】:

  • 您真的希望能够在 Web 根目录之外安装可执行文件吗?

标签: php iis fastcgi open-basedir


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 1970-01-01
    • 2011-07-01
    • 2012-02-21
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多