【问题标题】:Security: Deny access to .hg/* via mod_rewrite安全性:拒绝通过 mod_rewrite 访问 .hg/*
【发布时间】:2011-01-22 15:05:00
【问题描述】:

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

比如我有http://example.com/.hg/http://example.com/subrepo1/.hg/

我在 .htaccess 中添加了以下内容:

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

这是一个好的开始,因为它拒绝访问以.hg.ht 开头的文件,但它不会拒绝访问.hg 目录中的文件,所以如果有人键入,例如@987654327 @,分支文件将显示在他们的浏览器中。

我需要做什么才能确保这些文件不会显示给用户?如果有人试图访问我服务器上任何 .hg 目录中的文件,我想将 403 或 404 发送回浏览器。

这个问题也适用于网站是 subversion / svn 存储库的任何人。

【问题讨论】:

    标签: .htaccess mod-rewrite mercurial


    【解决方案1】:

    如果您没有使用mod_rewrite,那么您可以这样做:

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

    (完全披露:针对来自 this question 的 Mercurial 改编的关于为 Subversion 做同样事情的答案)。

    【讨论】:

    • 当我尝试使用 Directory、DirectoryMatch、Location 或 LocationMatch 进行任何操作时出现 500 错误,因此我认为 .htaccess 中不允许这样做。然而,RedirectMatch 就像一个魅力。谢谢!
    • @Tex - 我会编辑它 - 看来来自 SVN 问题的 OP 也无法让 DirectoryMatch 工作。
    • 我的理解是DirectoryDirectoryMatchLocationLocationMatch不允许在.htaccess中。
    • @Tex - 这对我来说很合适,基于httpd.apache.org/docs/2.0/mod/core.html#directorymatch,它表示它们在服务器配置文件(例如httpd.conf)和服务器配置文件中的VirtualHost 容器中可用, .htaccess 文件中不允许使用它们。
    【解决方案2】:

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

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

    尝试以下操作(假设您可以通过 ssh 访问网络服务器):

    • 更改为您网站的 DocumentRoot
    • 创建一个 .htaccess 文件

    内容:

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

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

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

    【讨论】:

    • 嗨,我也喜欢这个解决方案,但它有一个缺点 - .hg 目录中的文件没有版本控制,我很确定它们不会包含在一个存储库。这意味着如果我从一个新的克隆重新开始,我必须再次执行此步骤,因为如果我没记错的话,.hg/.htaccess 文件不会自动包含在克隆中。
    • 是的,我认为你是对的。在新的克隆中,它不会被包含在内。
    【解决方案3】:

    如果您只是将存储库完全保留在 DocumentRoot 之外,那么问题就不会那么严重了。您可能正在使用 hgweb 或 hgwebdir,它们不需要文件位于 DocumentRoot 中,所以不要这样做。将它们放在 /home/hg/repos 或其他地方,然后配置您的 hgwebdir.conf 以查看那里。

    在 DocumentRoot 中包含 repos 的唯一原因是为 mercurial 启用静态 http URL 表单,但它非常慢,并且在可能的情况下始终首选 hgweb。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-04
      • 2019-09-23
      • 2013-04-02
      • 2015-01-14
      • 2020-08-07
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多