我已经看过几个解释IIS下PHP安装的教程,因为FastCGI建议将open_basedir设置为指向网站内容所在的文件夹或网络路径。
当我在我的应用程序服务器上设置open_basedir时,管理文件时出现以下错误: 警告:open_basedir限制生效。文件(C:\ Windows \ Temp \ php92E7.tmp)不在允许的路径中:(C:\ inetpub \ wwwroot)
我知道我可以在inetpub下设置一个临时指令,但我不明白为什么使用windows \ temp会有问题。
在IIS上,作为FastCGI的PHP是否有任何安全漏洞需要open_basedir限制? 如果没有,为什么要重新推荐?或者没有必要吗?
答案 0 :(得分:2)
设置open_basedir(不仅在带有IIS的Windows上,而且在任何Web服务器上都有任何平台)是一种安全措施,用于限制应用程序可以读取,写入,和包含的文件。
PHP可以包含来自文件系统中任何位置的PHP代码的任何文件,这不是一个真正的安全漏洞,但它是一个功能。例如,您可能在Web根目录中有一些文件,而在Web根目录下有其他文件(Web服务器无法访问它们,但PHP可以访问它们)。
但是,如果您的程序存在缺陷,您的用户可能会阅读或包含(甚至编写)不属于您的应用程序的文件。这些可能是系统文件,用户上传的文件或其他应用程序的文件。这就是open_basedir很重要的原因。
注意,在设置open_basedir之后,还要设置其他PHP函数的路径(例如upload_tmp_dir),因为它们也应该在open_basedir路径下。