Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Web.config上的写入权限存在安全问题_Php_Iis 7_Url Rewriting_Web Config_Security - Fatal编程技术网

Php Web.config上的写入权限存在安全问题

Php Web.config上的写入权限存在安全问题,php,iis-7,url-rewriting,web-config,security,Php,Iis 7,Url Rewriting,Web Config,Security,我目前有一个PHP站点运行在IIS7.5服务器上 我在web.config中为IIS使用内置的url重写工具 我的CMS管理员有能力允许用户编写自己的重写。因此,我的管理工具(用PHP编写)需要IUSER的写修改权限,以便PHP修改文件。然而,我认为这对于安全性来说可能不是一个好的实践,所以我决定将重写移到web.config引用的rewrite.config文件中。然后,我为重写文件而不是web.config授予写/修改权限 唯一的问题是IIS会缓存外部重写文件,并且不会重新加载它,除非缓存了

我目前有一个PHP站点运行在IIS7.5服务器上

我在web.config中为IIS使用内置的url重写工具

我的CMS管理员有能力允许用户编写自己的重写。因此,我的管理工具(用PHP编写)需要IUSER的写修改权限,以便PHP修改文件。然而,我认为这对于安全性来说可能不是一个好的实践,所以我决定将重写移到web.config引用的rewrite.config文件中。然后,我为重写文件而不是web.config授予写/修改权限

唯一的问题是IIS会缓存外部重写文件,并且不会重新加载它,除非缓存了web.config的上次修改日期。我可以手动强制服务器重新加载rewrite.config文件,方法是在文本编辑器中打开web.config,添加空格或其他内容,然后单击“保存”,服务器会注意到上次修改的日期已更改,然后使用新的重写重新加载重写文件

但是我不能永远这样做,我需要我的管理工具来允许用户添加他们自己的重写,而无需在重写生效之前致电我对web.config进行更改

我了解到我可以在web.config文件上调用PHP中的touch函数,这解决了我的问题,因为它更改了web.config文件上最后修改的日期。但是,为了使touch正常工作,PHP需要IUSER具有写入权限,但不需要修改权限

所以最后我的问题是。。。就安全性而言,允许web.config具有IUSER读写权限,但不允许修改吗?或者这仍然是一个安全问题


如果是这样,我正在为这个网站创建什么漏洞?而且,我如何才能改变我的方法,不让自己暴露在这些弱点面前

回答我自己的问题。最好的做法是避免将I_用户权限授予web.config。我们最终重写了代码,不再需要它