【问题标题】:How to hide certain file type using apache .htaccess?如何使用 apache .htaccess 隐藏某些文件类型?
【发布时间】:2011-02-21 01:08:25
【问题描述】:

很久没有破解 .htaccess 文件了...

40 倍阻止对整个网站的特定文件扩展名的访问的最简单方法是什么?

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:
    <FilesMatch "\.ext$">
        Deny from all
    </FilesMatch>
    

    请参阅 FilesMatchDeny 上的 Apache 文档

    编辑:Artefacto 生成good point,如果这对您的目的很重要,这将返回 403,而不是 404

    【讨论】:

      【解决方案2】:
      <FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak)$">
      Order Allow,Deny
      Deny from all
      </FilesMatch>
      

      加载了一些常见的扩展,根据需要添加更多。

      【讨论】:

        【解决方案3】:

        如果你真的想要一个 404(而不是 403),你可以使用 mod_rewrite:

        RewriteEngine on
        RewriteRule \.ext$ - [R=404]
        

        【讨论】:

        • 对不起 - 403 是我应该使用的。我将问题编辑为 40 倍。
        • 请注意,当禁止访问资源时,RFC 2616 允许 404 响应(请参阅第 10.4.4 节)。所以你原来的问题是有效的。
        • 还有Redirect 404,参考:Requests to .htaccess should return 404 instead of 403RedirectMatch 404,参考:Make .git directory web inaccessible - 只是在这里聚集一点。
        • 对我不起作用。 RewriteEngine on RewriteRule \.lfpt$ - [R=404] 显示文件。 URL 重写在网站的其他地方工作。
        • @SteveAlmond 你写的 (\.lfpt$) 匹配以.lfpt 结尾的所有内容,如果你有一个名为lfpt 的文件,它不会匹配但会显示它。如果您的文件名为anythinghere.lfpt,则它是匹配的。 \. 是转义的 .
        【解决方案4】:

        您还可以使用RedirectMatch 指令拒绝对文件扩展名的访问:

        RedirectMatch 403 ^/.+\.(php|html|gif)$
        

        如果客户端请求任何以 .php.html.gif 结尾的 uri,这将为客户端返回 403 禁止错误。您可以使用条形 | 向模式添加更多扩展。

        【讨论】:

          【解决方案5】:

          我喜欢@Chris Lawlor 和@starkeen 的回答,因为 OP 询问“40x”,所以我建议重定向到 404 错误,因为它不会泄露文件存在的事实。

          这是我目前在我的一个项目中使用的:

          # Hide files not concerning the user
          RedirectMatch 404 \.(htaccess|htpasswd|ini|log|sh|inc|bak|bkp|sql)$
          

          【讨论】:

            【解决方案6】:

            @Dário 对文件类型有正确的想法,它也可以用于特定的文件和目录。唯一缺少的是管理区分大小写。

            我遇到了this article that gives some detail about case-sensitive RedirectMatch,还建议不要区分大小写。

            当涉及到重定向大多数请求时,无论如何它都是小写的。或者您可以使用RewriteRule 来建立不区分大小写的功能。但在某些情况下,很高兴知道您也可以通过简单地将 (?i) 添加到规则中来滚动 RedirectMatch

            RedirectMatch 403 /\$\&
            RedirectMatch 403 (?i)/\.(bash|git|hg|log|svn|swp|tar)
            RedirectMatch 403 (?i)/(1|contact|i|index1|iprober|phpinfo|phpspy|product|signup|t|test|timthumb|tz|visit|webshell|wp-signup).php
            RedirectMatch 403 (?i)/(author-panel|class|database|manage|phpMyAdmin|register|submit-articles|system|usage|webmaster)/?$
            RedirectMatch 403 (?i)/(=|_mm|cgi|cvs|dbscripts|jsp|rnd|userfiles)
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-07-23
              • 1970-01-01
              • 2011-04-12
              • 2010-11-25
              相关资源
              最近更新 更多