使用 FilesMatch 提高安全性

使用 FilesMatch 提高安全性

我一直在尝试使用 FilesMatch 指令。在第一次尝试时,我发现我的默认规则(规则集 1 和 2)不允许我访问www.test.com/,但允许我访问www.test.com/index.php

我推测这是因为文件"/"命中了规则集 1,但没有命中规则集 2,所以被阻止了。因此,我设置了规则集 3,现在一切似乎都正常了。我只是想问一下,是否有人对实施此指令有任何建议,以及我是否以正确的方式实施了此指令?

#Ruleset1
<FilesMatch "^.*$">
        Order Deny,Allow
        Deny from all
</FilesMatch>

#Ruleset2
<FilesMatch "^.*\.(css|html?|js|pdf|txt|xml|xsl|gif|ico|jpe?g|png|php?)$">
        Order Deny,Allow
        Allow from all
</FilesMatch>

#Ruleset3
<FilesMatch "">
        Order Deny,Allow
        Allow from all
</FilesMatch>

答案1

这很可能没有按照您预期的那样进行。

您的最后一场匹配有效地覆盖了其他规则并允许所有请求;""将始终匹配所有内容(您的第一部分也将如此"^.*$")。

仅仅使用<FilesMatch>似乎不适合你的方法,但你能否澄清你想要实现的目标?

编辑:

类似这样的事情应该对两种情况都起作用:

<Location />
    Order deny,allow
    Deny from all
</Location>
<LocationMatch "(/|\.css|\.html?|\.js|\.pdf|\.txt|\.xml|\.xsl|\.gif|\.ico|jpe?g|\.png|\.php)$">
    Allow from all
</LocationMatch>

相关内容