1

我目前有一个在 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 权限来读取和写入但不能修改?或者这仍然是一个安全问题。

如果是这样,我为这个网站创建了哪些漏洞?而且,我怎样才能改变我的方法,不让自己对这些漏洞敞开心扉?

4

1 回答 1

0

回答我自己的问题。最好避免向 web.config 授予 I_USER 权限。我们最终重写了我们的代码,不再需要这个。

于 2019-04-05T21:47:19.237 回答