怎么使用份认证模块和.htaccess文件确保Web安全
要约束对一个网页的拜访,可运用Apache和第三方供给的身份认证模块和方法来验证用户的凭证(如用户名和暗码)。一些模块支撑经过各种数据库(包含NIS和LDAP)进行身份认证。
用户认证指令一般放置在.htaccess文件中。下面是运用Apache默许身份认证模块(mod_auth)的一个根本.htaccess文件。当这个文件放置在/var/www中时,会导致Apache要求用户输入暗码进行验证,然后浏览器才干拜访/var/www目录层次结构中的内容。应用时,要用本地服务器的相应值进行替换。
# cat .htaccess
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Browser dialog box query"
AuthType Basic
require valid-user
/var/www/.htpasswd是一个.htpasswd文件的典型肯定路径名,用户在要求输入用户名和暗码的对话框中会看到字符串Browser dialog box query。
前面.htaccess文件的第二行封闭组功用。第四行指定用户的身份认证类型为Basic,这也是mod_auth模块的默许设置。最终一行告知Apache哪些用户能够拜访受维护的目录。valid-user条目会授权任何用户(用户名在Apache暗码文件中而且输入的暗码正确)拜访该目录。
只需Apache能够读取其暗码文件,该文件可放在体系上的任何地方。把这个文件与.htaccess文件放在同一目录下也是安全的,由于默许情况下,Apache将不会对姓名以.ht最初的任何文件的恳求进行回复。可是必定不要更改httpd.conf装备文件,以防Apache对姓名以.ht最初的文件的恳求进行回复。
下面的指令将在作业目录中创立(–c)一个带有Sam条目的.htpasswd文件。省掉–c选项能够在现有.htpasswd文件中增加用户或更改暗码。
$ htpasswd -c .htpasswd sam
New password:
Re-type new password:
Adding password for user sam
默许的httpd.conf文件包含用于/var/www的AllowOverride None指令。要启用Apache来处理用户认证指令(如读取.htaccess文件),有必要将这个指令更改为AllowOverride AuthConfig或将其删去。
在Apache已装备为可处理.htaccess文件后,当它收到对文件的恳求时,有必要从所恳求的文件向上遍历目录层次结构一直到根目录,查找.htacess文件,以确认它是否能够供给该恳求的文件。此搜索可能会影响功能。一般情况下功能下降不太严峻,但假如功能很要害,则这个问题将很扎手。