2012
May
27

apache 内建可以针对网页路径,要求用户必须输入帐号、密码的功能,有了这个功能,就不需求用 PHP 或 ASP 撰写 Form 表单来验证帐号,只要简单的对 apche conf 做设定,就能完成 Web 登入机制,一般来说,apache 设定档都会命名为 「.」开头的档案名称,如 .htaccess , .ht,再将设定值写进设定档中,帐密的检查方式有三种,分别是 Basic 、Digest、DBM。

启用 .htaccess

利用 apache 内建的功能,自动载入 .htaccess 的设定档,一般安装 apache 的时候,预设是有 AllowOverride None,这是指定 apache 自动载入 .htaccess 设定档,若是 apache conf 中没有这个值,就要手动加上去。

Example
  1. <Directory />
  2. AllowOverride None
  3. </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 范例
Example
  1. <Location /var/www>
  2. AuthType Basic
  3. AuthName "Please input admin password"
  4. AuthUserFile /var/.htpasswd
  5. Require valid-user
  6. </Location>

将密码档分成多个档案

假如你的密码档的帐号很多,又不想存放在同一个档案的时候,可以使用 Auth Provider 的方式,将密码档分成多个档案,这样就可以方便分开管理不同的群组。

Example
  1. <AuthnProviderAlias file pswd1>
  2. AuthUserFile /var/pswd/.passwd1
  3. </AuthnProviderAlias>
  4.  
  5.  
  6. <Location /xxx>
  7. AuthType Basic
  8. AuthName "Please input admin password"
  9. AuthBasicProvider pswd1
  10. Require valid-user
  11. </Location>

Auth Digest

这是比较新的密码加密方式,不过不是所有的浏览器都会支援,建立密码的方式,也是 apache 本身就内建的,指令为 htdigest ,相关资料可以参考下列的网址


回應 (Leave a comment)