PHP + IIS应用程序池标识Windows \ Temp权限

我目前在Win2k8 R2networking版服务器上的IIS 7.5上运行PHP(5.3),并希望知道我可以通过将读,写,修改和执行权限分配给系统来引入系统中的任何问题或安全漏洞IUSR帐户或%SystemRoot%\ Temp的IIS_USERS组?

我应该改变对该文件夹的权限(如Windows提醒我,我可能不应该当我试图改变它们)?

我应该在其他地方创build一个临时文件夹,并相应地设置权限?

问题是当我设置匿名身份validation(我猜是一个更安全的选项???)使用应用程序池的身份,当开始会议PHP卡在一个循环,因为它无法创build%SystemRoot% \ Temp文件夹,因为应用程序池用户或IIS_USERS组缺less权限。

另一个问题是ImageMagick(PHP扩展)被拒绝访问%SystemRoot%\ Temp来编写临时文件,所以抛出exception。

我曾尝试过search谷歌,但没有具体涉及到这个问题。

任何帮助不胜感激。

分配匿名的inet用户“修改”权限默认的临时文件夹不是很明智。 因此,这不是一个安全失败,但是您正在对您的Web基础架构进行一些攻击。

一如往常,魔鬼在细节中。 只要将无害的数据写入该文件夹,就没有特殊的风险:文件夹本身与系统上其他许多地方没有区别。 当然,如果您想为该文件夹上的IUSR_设置权限,这也意味着您打算使用该分配,以便Web应用程序可以写入该分配。

存在这样的风险: – 对该文件夹拥有“执行”权限会删除一个安全层:如果攻击者find了将临时文件夹上的可执行文件上载并让系统运行的方法,则该文件将会运行。 如果你否认“执行”的权利,它根本不会工作。 – 该文件夹正好位于系统最敏感的部分之上:操作系统文件的位置。 这意味着,如果有人设法在使用临时文件的Web应用程序中使用目录遍历错误,他将离开系统根目录以及所有有趣的东西。

这些都不是真的太冒险了,但是好的安全依赖于安全性。 在这种情况下,我敢肯定你的PHP应用程序可以使用与系统临时目录不同的文件夹来保存临时文件。 最好的办法是把它放在一个单独的分区上,在一个文件夹中,IUSR_ *具有读/写权限,但不具有执行权限。