我目前有一个在 IIS7.5 服务器上运行的 PHP 站点。
我在 web.config 中使用为 IIS 构建的 url 重写工具。
我的 CMS 管理员能够允许用户编写自己的重写。所以我用 PHP 编写的管理工具需要 IUSER 的写入修改权限,以便 PHP 修改文件。但是我认为这可能不是安全的好习惯,所以我决定将重写移动到 web.config 引用的 rewrite.config 文件中。然后我授予重写文件而不是 web.config 的写入/修改权限。
唯一的问题是 IIS 缓存外部重写文件并且不会重新加载它,除非 web.config 的最后修改日期被缓存。我可以通过在文本编辑器中打开 web.config,添加空格或其他内容然后单击保存来手动强制服务器重新加载我的 rewrite.config 文件,然后服务器会注意到上次修改日期已更改,然后重新加载重写文件随着新的重写。
不过,我不能永远继续这样做,我需要我的管理工具来允许用户添加他们自己的重写,而不必在他们的重写生效之前打电话给我在 web.config 中进行更改。
我了解到我可以在 web.config 文件上调用 PHP 中的 touch 函数,这解决了我的问题,因为它更改了 web.config 文件上的最后修改日期。然而,为了让触摸工作 PHP 需要 IUSER 具有写入权限,但不能修改权限。
所以最后我的问题是......安全方面,是否可以让 web.config 具有 IUSER 权限来读取和写入但不能修改?或者这仍然是一个安全问题。
如果是这样,我为这个网站创建了哪些漏洞?而且,我怎样才能改变我的方法,不让自己对这些漏洞敞开心扉?