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

Tex*_*Tex 6 .htaccess mod-rewrite mercurial

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

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

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

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

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

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

此问题也适用于其网站为subversion/svn存储库的任何人.

Dom*_*ger 7

如果你不具备使用mod_rewrite,那么你可以这样做:

RedirectMatch 404 /\\.hg(/|$)
Run Code Online (Sandbox Code Playgroud)

(完全披露:从这个关于为Subversion做同样事情的问题改编为Mercurial的答案).