我目前正在开发一个应用程序,其中包含公共webroot下的许多目录,这些目录不应该公开访问。目前,这是通过在所有不应浏览的目录中删除一堆带有Deny from All
规则的.htaccess文件来完成的。
最近我发现通过在根目录中定义.htaccess中的RedirectMatch规则列表也会“隐藏”这些文件,抛出这样的404:
RedirectMatch 404 "/uploads*"
RedirectMatch 404 "/keys*"
RedirectMatch 404 "/private_files*"
....
RedirectMatch方法是否会施加任何其他安全漏洞,建议不要切换到这样一个“集中管理”的系统来定义什么是公共的?什么不是?
答案 0 :(得分:3)
它们并不等同。 RedirectMatch指令适用于URL级别。这意味着RedirectMatch 404 "/keys*"
可以阻止您访问以/keys
开头的任何URL,而另一种方法只会影响这些特定的物理目录(无论其URL)。它可能是一个bug或一个功能。
此外,如果您担心性能,Apache将需要为服务器收到的每个请求解析主RedirectMatch
中的.htaccess
规则。考虑到加载这些目录的尝试预计非常罕见,这可能是一种不必要的开销。
(正如其他人可能会指出的那样,最安全的机制是将那些文件移到公共文档根目录下,但我知道有些托管服务提供商不允许这样做。)
答案 1 :(得分:0)
<Directory /uploads>
Order Deny,Allow
Deny from all
</Directory>