我已经开始使用 git 部署网站进行测试。如何防止 apache 为 .git 目录内容提供服务?
我试过
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
Run Code Online (Sandbox Code Playgroud)
没有成功。
我知道我可以在每个 .git 目录中创建一个 .htaccess 文件并拒绝访问,但我想要一些我可以放入主配置文件的东西,使其在所有网站上都是全局的。
Ben*_*wee 168
这与许多其他答案具有相同的效果,但要简单得多:
RedirectMatch 404 /\.git
Run Code Online (Sandbox Code Playgroud)
这可以进入.htaccess或您的服务器配置文件。它通过返回 404 来隐藏名称以.git(例如.git目录或.gitignore文件)开头的任何文件或目录。因此,不仅您的 Git 存储库的内容被隐藏了,它的存在也被隐藏了。
sin*_*ing 71
它不起作用,因为您在规则中使用了“svn”而不是“git”。您所要做的就是用“git”替换“svn”。
<Directorymatch "^/.*/\.git/">
Order 'deny,allow'
Deny from all
</Directorymatch>
Run Code Online (Sandbox Code Playgroud)
dan*_*ton 15
如果您使用的是共享托管服务并且无权访问apache.conf,您仍然可以在 .htaccess 文件中执行此操作,如下所示:
RewriteEngine On
RewriteRule "^(.*/)?\.git/" - [F,L]
Run Code Online (Sandbox Code Playgroud)
小智 15
如果您不使用 .htaccess 文件,而是想使用 /etc/apache2/httpd.conf (或任何您服务器的主 conf 文件)来隐藏 .git 目录和 .gitignore 文件,您可以使用以下内容。我发现上面的 master conf setting 答案没有隐藏 gitignore 文件。
# do not allow .git version control files to be issued
<Directorymatch "^/.*/\.git+/">
Order deny,allow
Deny from all
</Directorymatch>
<Files ~ "^\.git">
Order allow,deny
Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)
### never deliver .git folders, .gitIgnore
RewriteRule ^(.*/)?\.git+ - [R=404,L]
# 2nd line of defense (if no mod_rewrite)
RedirectMatch 404 ^(.*/)?\.git+
Run Code Online (Sandbox Code Playgroud)
这适用于.htaccess,无需http.conf访问。将此作为重写规则的第一个。Rewrite On如果需要,请预先准备。
从安全角度来看,我更喜欢伪造的 404 而不是 403,这对攻击者来说提供了更多信息。将两者中的一个注释掉,以确保另一个也适用于您。
顺便说一句,好的变化是,您对两者的测试是:
http://localhost/.gitignore
http://localhost/.git/HEAD
Run Code Online (Sandbox Code Playgroud)
要使用 .htaccess 保护 .git 目录以及其他文件(例如 .gitignore 和 .gitmodules),请使用:
RewriteEngine On
RewriteRule ^(.*/)?\.git+ - [F,L]
ErrorDocument 403 "Access Forbidden"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62162 次 |
| 最近记录: |