本文标签:

    作为网站管理员,我们不希望存放在服务器上的某些文件夹内的文件的被未经授权访问者获取,所以我们需要一个有效的方法来限制某些文件夹的访问。也许你会问:常见的用php或其它语言编写的网站前台用户注册和登录系统不是已经限制用户可以进入哪些页面和使用什么功能吗?但是,这一类的认证机制只对这些语言编写出的文件有效(而且前提是你已把认证的代码嵌入该文件),但这一类认证机制并不能保护你网站上的图片、文档以及其它类型文件不被他人获取,访问者或黑客还是可以通过url直接获取到你存放在某个文件夹内的文件。

     有什么简单的方法可以让我们灵活地控制文件夹的访问呢?有个方法很简单,通过Apache的.htaccess和.htpasswd给文件夹加上用户密码认证就可以了。操作起来还很简单呢,因为apache服务器已经提供了丰富的认证支持,我们只需要制作两个文件.htaccess和.htpasswd(注意前面带有一个点)。

    注意:由于.htaccess文件名结构较特别,在Windows系统内无法创建文件名为.htaccess的文件(Windows Vista和Windows 7是可以创建这种文件名的,但是这之前的系统应该是不可以的),唯有的办法是在文本编辑器中写好.htaccess文件内容,保存,上传(ASCII传输方式)至站点服务器,然后在FTP中重命名上传文件为.htaccess即可。

.htaccess文件

AuthType Basic
AuthName "restricted area"
AuthUserFile /usr/virtual/default/www.x2009.net/conf/.htpasswd
require valid-user
第一行的AuthType指的是采用的认证方式,在这里我们选择的是一般的Basic,要注意的是,Basic认证方式传输密码过程是不加密的,更安全的方式是Digest,但Digest认证方式需要mod_auth_digest模块的支持,使用前最好先通过检查一下服务器是否已经开启该模块;第二行的AuthName记录的认证名称,会显示在认证询问框上,如果存在多个认证,认证名称可以让你更清楚当前认证该输入什么用户名和密码,遗憾的是认证名称似乎不支持中文;第三行,输入存放用户密码的认证文件路径。

.htpasswd文件

outwego.com:123456
outwego.net:654321
outwego:12tir.zIbWQ3c
在.htpasswd文件我们记录下授权用户的账号名和密码,冒号前的是账号名,冒号后的则是密码,一行记录一条授权用户信息,不要多,如果你不想密码明文显示出来,可以用MD5加密一下,网上有这样的工具,第三行代码就是密码123456加密后的效果。
test.php

<?php phpinfo(); ?>
最后,我们来测试一下,在网站根目录新建一个文件夹名字为webalizer把做好的两个文件上传并同一个测试文件test.php放入该文件夹,比如我的网站是www.x2009.net那么输入这个网址访问以下http://www.x2009.net/webalizer,看,这时是否会弹出一个认证询问框呢?输入相应帐户名和密码,你就可以看到服务器的配置情况了。如果浏览器出现500错误,很可能是AuthUserFile路径设置不正确导致。

注意:.htpasswd文件可以放在任意一个文件夹,只要在.htaccess里设置相应的位置就可以了,然后你要保护哪个文件夹,就把.htaccess放在那个文件夹就好了,以后任何人访问那个网址都会被询问用户名和密码,http://www.x2009.net/webalizer是一个演示,长期有效,你可以尝试访问看效果。

 » 订阅本站:http://feed.x2009.net