。htaccess-使目录不可见

问题描述 投票:1回答:3

我有一个.htaccess文件,目前看起来像:

订购允许,拒绝所有人都否认文件>选项全部-索引IndexIgnore *#使用404(而不是403)响应/ include /RewriteEngine开重定向匹配404 ^ / include(/?| /.*)$

我试图防止所有人都知道/ include /存在,但是我遇到了一个问题。

尽管访问http://www.example.com/include会得到404,但浏览器会添加一个斜杠(因此会给出http://www.example.com/include/),该斜杠表明该目录确实存在,但已被伪装。当访问实际的404时,不添加斜杠。

有没有办法防止这种行为?

apache .htaccess mod-rewrite http-status-code-404 http-status-code-403
3个回答
3
投票

1。您可以使用DirectorySlash Off告诉Apache不要在目录末尾添加斜杠。

2。

如果您实际上不使用重写引擎(基于提供的代码),为什么要使用RewriteEngine OnRedirectMatchmod_rewrite无关。

3。

如果要在此处使用mod_rewrite,请尝试以下规则-它会返回/include文件夹的404代码(带斜杠和不带斜杠)以及其中的任何资源文件(例如/include/main.php等)。RewriteEngine On RewriteRule ^include(/|/.+)?$ - [R=404,L]

0
投票
除了使用RedirectMatch之外,还使用重写规则。

0
投票
通过点文件泄漏目录的存在

在某些情况下,以下代码行不足以隐藏目录:

RewriteEngine On RewriteRule ^include(/|/.+)?$ - [R=404,L]

这些行不会阻止诸如include/.phpinclude/.htinclude/.htaccess之类的请求(相反,您会收到403 Forbidden错误,表明目录include存在)。相反,一个人想禁止访问所有

dot-files以防止泄漏文件夹(.git.php(只是“ .php”-没有文件名),.htaccess,...) 。 (附带说明:我猜.htaccess文件和主Apache配置文件之间可能存在一些问题,您可以在其中禁止访问“ .ht”文件并允许执行“ .php”文件-这就是为什么这样的请求正在做自己的事情而没有被简单地重写为404错误。相反,他们返回了403错误)。

因此您可以通过发送以下请求来绕过上述规则(您将收到403 Forbidden错误:]

如果目录不存在,您可以验证是否会收到404 Not Found错误:

错误http://example.com/DOESNT-EXISTS/.ht
  • →您会收到404
  • 错误http://example.com/DOESNT-EXISTS/.htaccess
  • →您会收到404
  • 错误
    可能的解决方法

    您需要匹配所有

    dot-files

    。因此,首先您禁止访问它们(403错误),然后将403错误重写为404错误。Options -Indexes RewriteEngine On RewriteRule ^secret.*$ - [R=404,L] RewriteRule ^404_error$ - [R=404,L] <FilesMatch "^\\."> order allow,deny # 403 error deny from all # Rewrite 403 error to 404 error # Error document must be: # - "a string with error text" OR # - an absolute path which starts with "/" OR # - URL (you'll get a redirect) ErrorDocument 403 /404_error </FilesMatch>
    这些请求现在被阻止,并且您会收到404 Not Found错误:

      / secret / treasure.php(该文件夹中的所有文件和目录)
    • /秘密
    • / secret /
    • /秘密?42
    • / secret /?23
    • / secret / .php
    • / secret / .htaccess

  • 这是我类似问题的答案:Rewrite requests to directory with htaccess to 404 error
  • © www.soinside.com 2019 - 2024. All rights reserved.