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)