apache 内建可以针对网页路径,要求用户必须输入帐号、密码的功能,有了这个功能,就不需求用 PHP 或 ASP 撰写 Form 表单来验证帐号,只要简单的对 apche conf 做设定,就能完成 Web 登入机制,一般来说,apache 设定档都会命名为 「.」开头的档案名称,如 .htaccess , .ht,再将设定值写进设定档中,帐密的检查方式有三种,分别是 Basic 、Digest、DBM。
启用 .htaccess
利用 apache 内建的功能,自动载入 .htaccess 的设定档,一般安装 apache 的时候,预设是有 AllowOverride None,这是指定 apache 自动载入 .htaccess 设定档,若是 apache conf 中没有这个值,就要手动加上去。
- <Directory />
- AllowOverride None
- </Directory>
Auth Basic
这是最常见的一种登入设定,首先使用 「htpasswd」的指令建立密码档,「htpasswd」这个指令在安装 apache 时候就有了,可以查看 apache 安装目录 「apache/bin/」。
建立帐号 user htpasswd -c .htpasswd user
修改帐号 user 的密码 htpasswd .htpasswd user
经过上一个步骤,我们就建立好密码档 .htpasswd 了,这个档案最好要移到安全的资料夹,不对外公开,否则只要骇客取得你的密码档,可以很快的就破解取得帐号与密码,将档案搬到安全的地点后,就修改 apache conf 指定那个资料夹需要有登入机制(/var/www),并指定密码档的路径。
- apache conf file 范例
- <Location /var/www>
- AuthType Basic
- AuthName "Please input admin password"
- AuthUserFile /var/.htpasswd
- Require valid-user
- </Location>
将密码档分成多个档案
假如你的密码档的帐号很多,又不想存放在同一个档案的时候,可以使用 Auth Provider 的方式,将密码档分成多个档案,这样就可以方便分开管理不同的群组。
- <AuthnProviderAlias file pswd1>
- AuthUserFile /var/pswd/.passwd1
- </AuthnProviderAlias>
- <Location /xxx>
- AuthType Basic
- AuthName "Please input admin password"
- AuthBasicProvider pswd1
- Require valid-user
- </Location>
Auth Digest
这是比较新的密码加密方式,不过不是所有的浏览器都会支援,建立密码的方式,也是 apache 本身就内建的,指令为 htdigest ,相关资料可以参考下列的网址