通过404'ing所有不应该是可见的东西来增加CMS安全性

时间:2012-06-17 10:03:43

标签: security .htaccess mod-rewrite

我制作了一个简单的.htaccess文件,可防止用户加载系统核心文件夹中的url。然而,这并没有完全奏效。

如果我加载http://domain.com/systemfolder/,我会收到404 File not found,这样很酷,但如果我输入http://domain.com/systemfolder(请注意该网址没有尾随/),mod_dir会重定向如果从http://domain.com/systemfolderhttp://domain.com/systemfolder/。如果我为该特定目录禁用mod_dir,则会获得401 Permission denied而不是404 File not found,因此攻击者可以识别我的系统。我该如何解决这个问题?

其他信息:我正在使用mod_rewrite进行404.ing。

我当前的.htaccess(位于系统根目录下的所有系统文件夹中)如下所示:

<IfModule mod_dir.c> 
    DirectorySlash Off 
</IfModule> 
<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^(.*)$ - [R=404,L] 
</IfModule> 
<IfModule !mod_rewrite.c> 
    Order allow,deny Deny from all 
</IfModule>

你可能会问自己:为什么他会这样做?

答案很简单:基本上任何开源CMS如Joomla!,WordPress或Drupal都容易受到攻击,因为这些并非100%防弹。一旦破解者发现漏洞,他基本上会告诉成千上万的破解者,他们有机会破解该系统。这些系统不是100%防弹的原因是10%,因为人类仅仅是人类,90%是因为有数千人为系统做出贡献,并不是每个人都能生成安全的代码。事实证明,成千上万的人可以相对快速地发布这个修补程序。

饼干的第一步是识别这样的系统。如果他能够在网址中加入额外的wp-admin并且它可以正常工作,那么他基本上确定了WordPress网站。 Cracker的第二步是找到漏洞。第三步是利用该漏洞。

我的方法是在步骤1停止破解,因此他无法识别系统。当然,页脚中可能会有系统签名,但这需要人工交互。通过屏蔽每个网址和基于密钥的网页内容加载(如果在uri中没有提供有效密钥,用户将基本上无法加载任何图像或视频,方法是加载在图像末尾附加一个时间键的页面网址)。管理将在专用服务器上,只对某些IP开放,所以是的,我认为它会非常安全。

0 个答案:

没有答案