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 ,相關資料可以參考下列的網址
回應 (Leave a comment)