用 .htaccess 保护网站敏感目录的改进方法

很多人都在使用 .htaccess 保护网站的敏感目录(如:网站后台),方法无非是使用 HTTP 基本认证(HTTP Basic Auth)和 IP 白名单。HTTP 基本认证方式过于简单,IP 白名单对于动态 IP 用户不方便。因此,这里推荐一种使用 Cookie 验证的方法,不仅可以有效解决上面提到的问题,同时还可“修改”敏感目录名。

首先说明一下,此方法仅限于在支持 PHP 语言与 .htaccess 的主机上使用。没问题吧?那现在让我们很快地进入操作环节吧——

第一步,建立一个名称较为复杂的目录。这个目录将来是我们要访问的目录哦,所以最好自己能记得住又难被猜测,那么在本例中使用 MyAdminFolder。注意:部分主机对网址中的字母大小写敏感,这个同样适用于下一步。

第二步,在上述目录中建立 PHP 文件。通常使用 index.php,因为这可以避免在目录后面输入文件名。如果使用其他的文件名(如 IwantEnter.php),虽然麻烦但是可以提高安全性哦。

第三步,为刚刚建立的 PHP 文件写入内容。将以下内容扔进去,记得要根据中文提示修改相应信息哦!在此推荐一个随机字符生成器,只生成含大小写字母和数字的随机串就行了,否则可能会用不了。

<?php
$SecretCode="RandomStringHere"; //请把 RandomStringHere 改成自己的随机字符串
setcookie("SecureAdminSession",$SecretCode,0,"/");
header("Location: /admin/"); //请把 /admin/ 你要进入网页的地址(如后台网址),可以使用绝对地址
?>

第四步,修改 .htaccess 文件内容。此举是为了保护原目录。请将以下内容扔进去。注意修改 /admin/ 与 RandomStringHere,务必保证与上面所修改内容保持一致

#保护敏感目录 开始
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/admin/
RewriteCond %{HTTP_COOKIE} !SecureAdminSession=RandomStringHere
RewriteRule .* - [L,F]
#保护敏感目录 结束

第五步,完成,测试。按照本例中的数据,那么结果是只有访问 /MyAdminFolder/ 才可以进入网站的真实后台 /admin/,且使用的 Cookie 将在浏览器关闭后失效,如果直接访问 /admin/ 则会返回 HTTP 403 错误。

操作步骤完,最后给点提示。如果不慎泄露了随机字符串(本例为 RandomStringHere),可以直接换一个新的,即可令之前的 Cookie 全部失效,保证敏感目录的安全。当然,定时更换也是一个好习惯。另一个,因为在浏览器地址栏输入网址通常会被记录,所以我建议关键时刻一定打开无痕浏览哦!

那么,用了这个方法以后,其他的使用 .htaccess 的安全措施是不是可以考虑丢掉了呢?

较大一部分参考自常青藤。

全部为采集文章,文中的 联系方式 均不是 本人 的!

发表评论