当前位置:  开发笔记 > 运维 > 正文

如何在Apache中隐藏目录,特别是源代码控制?

如何解决《如何在Apache中隐藏目录,特别是源代码控制?》经验,为你挑选了4个好方法。

我希望我的网站保持版本控制(特别是Subversion)并svn co在有稳定版本更新时使用更新它,但是我担心这样做的安全性,因为所有.svn文件夹都是公开的,这些包括各种私人数据,其中至少是我网站的完整源代码!

我有什么办法可以防止这种情况发生吗?



1> Vinko Vrsalo..:

两件事情:

    不要使用IfModule来实现您需要的功能.它可以用于自动索引,因为它可能不存在并且对于该方案不是至关重要的.但是你依靠重写来保护你的内容.因此,最好删除IfModule指令并让apache告诉你何时不存在重写以启用它(或者至少知道你不会被"保护"并有意识地评论这些行)

    如果您可以访问主配置文件,则无需使用重写,更容易使用

    
       Order allow,deny
       Deny from all
    
    

这将生成403 Forbidden(从HTTP合规性角度来看更好),或者,如果您想通过默认路由获取安全性,请使用AliasMatch

    AliasMatch \.svn /non-existant-page

如果您无法访问主配置文件,那么您希望在.htaccess中启用mod_rewrite.


你需要从最近的apache版本的"allow,deny"中取出空白区域

2> Gilles 'SO- ..:

在同样的情况下,我使用RedirectMatch了两个原因.首先,它是我能找到的唯一方法,允许在.htaccess该服务器上使用相当严格的配置,我无法修改.另外我认为它最干净,因为它允许我告诉Apache是​​的,那里有一个文件,但只是假装它不是在服务时,所以返回404(而不是403会暴露网站浏览者不应该知道的东西) ).

我现在将以下内容视为.htaccess文件的标准部分:

## Completely hide some files and directories.
RedirectMatch 404 "(?:.*)/(?:[.#].*)$"
RedirectMatch 404 "(?:.*)~$"
RedirectMatch 404 "(?:.*)/(?:CVS|RCS|_darcs)(?:/.*)?$"



3> Matthew Scha..:

这可以在服务器范围内(推荐),在单个虚拟主机的基础上实现,甚至可以在.htaccess文件内部实现,如果您的服务器对它们允许的内容稍微允许的话.您需要的具体配置是:

RewriteEngine On
RewriteRule /\.svn /some-non-existant-404-causing-page


    IndexIgnore .svn

第一部分要求mod_rewrite.它会强制任何带有"/.svn"的请求(即对目录的任何请求,或目录中的任何内容)在内部重定向到您网站上不存在的页面.这对最终用户完全透明且不可检测.它还会强制发生404错误,就像您的.svn文件夹刚刚消失一样.

第二部分纯粹是装饰性的,.svn如果激活了自动索引模块,它将隐藏文件夹.这也是一个好主意,只是为了让好奇的灵魂得不到任何想法.



4> Erwan..:

我使用以下命令向用户返回一个简单的404,而不是显示源控件目录实际存在:

RedirectMatch 404 /\.(svn | git)(/|)

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有