如何應(yīng)用份認(rèn)證模塊和.htaccess文件保證Web安全
要限制對(duì)一個(gè)網(wǎng)頁(yè)的訪問(wèn),可使用Apache和第三方提供的身份認(rèn)證模塊和方法來(lái)驗(yàn)證用戶(hù)的憑據(jù)(如用戶(hù)名和密碼)。一些模塊支持通過(guò)各種數(shù)據(jù)庫(kù)(包括NIS和LDAP)進(jìn)行身份認(rèn)證。
用戶(hù)認(rèn)證指令通常放置在.htaccess文件中。下面是使用Apache默認(rèn)身份認(rèn)證模塊(mod_auth)的一個(gè)基本.htaccess文件。當(dāng)這個(gè)文件放置在/var/www中時(shí),會(huì)導(dǎo)致Apache要求用戶(hù)輸入密碼進(jìn)行驗(yàn)證,然后瀏覽器才能訪問(wèn)/var/www目錄層次結(jié)構(gòu)中的內(nèi)容。應(yīng)用時(shí),要用本地服務(wù)器的相應(yīng)值進(jìn)行替換。
# cat .htaccess
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Browser dialog box query"
AuthType Basic
require valid-user
/var/www/.htpasswd是一個(gè).htpasswd文件的典型絕對(duì)路徑名,用戶(hù)在要求輸入用戶(hù)名和密碼的對(duì)話框中會(huì)看到字符串Browser dialog box query。
前面.htaccess文件的第二行關(guān)閉組功能。第四行指定用戶(hù)的身份認(rèn)證類(lèi)型為Basic,這也是mod_auth模塊的默認(rèn)設(shè)置。最后一行告訴Apache哪些用戶(hù)可以訪問(wèn)受保護(hù)的目錄。valid-user條目會(huì)授權(quán)任何用戶(hù)(用戶(hù)名在Apache密碼文件中并且輸入的密碼正確)訪問(wèn)該目錄。
只要Apache可以讀取其密碼文件,該文件可放在系統(tǒng)上的任何地方。把這個(gè)文件與.htaccess文件放在同一目錄下也是安全的,因?yàn)槟J(rèn)情況下,Apache將不會(huì)對(duì)名字以.ht開(kāi)頭的任何文件的請(qǐng)求進(jìn)行回復(fù)。但是一定不要更改httpd.conf配置文件,以防Apache對(duì)名字以.ht開(kāi)頭的文件的請(qǐng)求進(jìn)行回復(fù)。
下面的命令將在工作目錄中創(chuàng)建(–c)一個(gè)帶有Sam條目的.htpasswd文件。省略–c選項(xiàng)可以在現(xiàn)有.htpasswd文件中添加用戶(hù)或更改密碼。
$ htpasswd -c .htpasswd sam
New password:
Re-type new password:
Adding password for user sam
默認(rèn)的httpd.conf文件包括用于/var/www的AllowOverride None指令。要啟用Apache來(lái)處理用戶(hù)認(rèn)證指令(如讀取.htaccess文件),必須將這個(gè)指令更改為AllowOverride AuthConfig或?qū)⑵鋭h除。
在Apache已配置為可處理.htaccess文件后,當(dāng)它收到對(duì)文件的請(qǐng)求時(shí),必須從所請(qǐng)求的文件向上遍歷目錄層次結(jié)構(gòu)一直到根目錄,查找.htacess文件,以確定它是否可以提供該請(qǐng)求的文件。此搜索可能會(huì)影響性能。通常情況下性能下降不太嚴(yán)重,但如果性能很關(guān)鍵,則這個(gè)問(wèn)題將很棘手。






















