RedirectMatch与全部拒绝 - 哪个更安全?

时间:2011-07-15 08:02:30

标签: security apache .htaccess

我目前正在开发一个应用程序,其中包含公共webroot下的许多目录,这些目录不应该公开访问。目前,这是通过在所有不应浏览的目录中删除一堆带有Deny from All规则的.htaccess文件来完成的。

最近我发现通过在根目录中定义.htaccess中的RedirectMatch规则列表也会“隐藏”这些文件,抛出这样的404:

RedirectMatch 404 "/uploads*"
RedirectMatch 404 "/keys*"
RedirectMatch 404 "/private_files*"
....

RedirectMatch方法是否会施加任何其他安全漏洞,建议不要切换到这样一个“集中管理”的系统来定义什么是公共的?什么不是?

2 个答案:

答案 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>