代码之家  ›  专栏  ›  技术社区  ›  tex

安全性:拒绝通过mod_rewrite访问.hg/*

  •  6
  • tex  · 技术社区  · 16 年前

    我的网站是一个多个子存储库。我需要确保拒绝访问服务器上每个.hg目录中的所有文件。

    例如,我有 http://example.com/.hg/ 和 http://example.com/subrepo1/.hg/

    我已将以下内容添加到.htaccess:

    <Files ~ "^\.(hg|ht)">
        Order allow,deny
        Deny from all
    </Files>
    

    这是一个好的开始,因为它拒绝访问以 .hg 和 .ht ,但它不拒绝访问内部文件 汞 目录,例如,如果有人键入 http://example.com/.hg/branch ,分支文件将显示在其浏览器中。

    为了确保这些文件不会显示给用户,我需要做什么?如果有人试图访问任何 汞 我服务器上的目录。

    此问题也适用于其网站是Subversion/SVN存储库的任何人。

    3 回复  |  直到 16 年前
        1
  •  7
  •   Community Mohan Dere    9 年前

    如果你不 有 使用 mod_rewrite ,然后您可以这样做:

    RedirectMatch 404 /\\.hg(/|$)
    

    (完全披露:答案适用于来自 this question 为了颠覆而做同样的事情)。

        2
  •  0
  •   Aurril Thorbjørn Ravn Andersen    16 年前

    您始终可以将.htaccess文件放在这些文件夹中,并拒绝该文件夹中的所有访问。

    我假设你想要一个解决方案,你不必把.htaccess文件放在每个文件夹和子文件夹中?

    尝试以下操作(假设您对Web服务器具有ssh访问权限):

    • 更改为网站的documentroot
    • 创建.htaccess文件

    内容:

    Order deny, allow
    Deny from all
    
    • 执行以下命令:

      find . -type d -name .hg -exec cp ./.htaccess {} \;

    • 然后再次从文档根目录中删除.htaccess文件

        3
  •  0
  •   Ry4an Brase    16 年前

    如果您只是将存储库完全放在documentroot之外,那么这就不那么重要了。您可能使用的是hgweb或hgwebdir,它不要求文件在documentroot中,所以不要这样做。把它们放在/home/hg/repos或者其他什么地方,然后配置hgwebdir.conf查看那里。

    将repos放在documentroot中的唯一原因是为mercurial启用静态HTTP URL表单,但速度非常慢,并且尽可能使用hgweb。

    推荐文章