|
匿名請求
該種方式不需要從用戶得到任何信息。默認(rèn)情況下,當(dāng)瀏覽器對一個(gè)頁面發(fā)出Web請求時(shí), IIS首先嘗試不進(jìn)行用戶驗(yàn)證處理請求。要作到這一點(diǎn),IIS將扮演一個(gè)特定的Windows NT 帳戶—IUSR_machinename (IUSR_machinename的machinename是IIS的主機(jī)計(jì)算機(jī)名)。該帳戶在安裝IIS時(shí)創(chuàng)建。如果IIS扮演IUSR_machinename帳戶時(shí)能夠訪問請求的資源,則該Web頁面將能夠被匿名用戶訪問。
IUSR_machinename帳戶的密碼和Internet Service Manager(Internet服務(wù)管理器)中輸入的密碼不匹配是匿名訪問時(shí)發(fā)生的一個(gè)常見問題。當(dāng)IIS試圖扮演IUSR_machinename帳戶時(shí),它會(huì)提交在Windows NT服務(wù)器的匿名登錄文本框輸入的密碼。如果密碼不正確,IIS將無法使用IUSR_machinename帳戶。而一旦匿名訪問失敗,IIS將會(huì)對所有用戶進(jìn)行驗(yàn)證。因?yàn)轵?yàn)證過程沒有提示,所以站點(diǎn)的驗(yàn)證可能會(huì)失敗,但原因卻往往不明顯。就此我已經(jīng)告訴過許多遇到奇怪的安全問題的Web站點(diǎn)管理員,因?yàn)樗麄兊恼军c(diǎn)對每個(gè)用戶進(jìn)行驗(yàn)證,而他們卻根本不知道這一點(diǎn)。如果你的頁面訪問其它諸如數(shù)據(jù)庫或客戶端組件(比如DLLs)等資源,使用的驗(yàn)證類型將會(huì)有很大不同。
驗(yàn)證的請求
對用戶身份的肯定確認(rèn)是必要的。當(dāng)IIS無法使用IUSR_machinename帳戶時(shí),IIS將嘗試驗(yàn)證并隨后扮演用戶以便確定該用戶是否可以訪問請求的資源。IIS可以使用兩種方法進(jìn)行用戶驗(yàn)證:盤問/響應(yīng)驗(yàn)證和基本驗(yàn)證。這些方法在本文的后面進(jìn)行討論。驗(yàn)證的Web訪問通常最適合一個(gè)公司的Intranet或其內(nèi)部包含的,經(jīng)過細(xì)致定義的工作組。不過即使這樣,仍然還要考慮一些限制。
控制驗(yàn)證方法,以及關(guān)心的原因
IIS Service Manager(IIS服務(wù)管理器)工具是配置IIS進(jìn)行WWW、FTP和Gopher服務(wù)的主要場所。不需要對WWW屬性對話框的選項(xiàng)了解過多的細(xì)節(jié),我們只需要關(guān)心幾個(gè)關(guān)鍵項(xiàng)。默認(rèn)情況下,密碼驗(yàn)證選項(xiàng)組中選擇了匿名和盤問/響應(yīng)驗(yàn)證。第三種方法是基本驗(yàn)證,將在后面說明。讓我們看看幾種控制對你的Web服務(wù)器進(jìn)行訪問的方式。
“允許匿名(Allow Anonymous)”選項(xiàng)框 如果選擇了允許匿名(Allow Anonymous),IIS將通過扮演匿名登錄帳戶(默認(rèn)為IUSR_machinename)嘗試訪問請求的資源。當(dāng)IUSR_machinename帳戶被自動(dòng)創(chuàng)建后,它會(huì)被分配一個(gè)隨機(jī)密碼,并被添加到Guests組,賦予guest權(quán)限。選擇或取消選擇允許匿名是允許和禁止匿名訪問整個(gè)Web服務(wù)器的最佳方法。當(dāng)取消選擇允許匿名后,只有具有有效、可驗(yàn)證(使用基本驗(yàn)證或挑戰(zhàn)/響應(yīng)驗(yàn)證) Windows NT帳戶的用戶能夠得到服務(wù)。使用這種方式設(shè)置IIS通常只適用于團(tuán)體或成員性的設(shè)置,這時(shí)驗(yàn)證訪問你的站點(diǎn)的所有用戶很重要。 改變文件和文件夾的權(quán)限 NTFS級的權(quán)限在IIS也得到支持,所以對文件和文件夾進(jìn)行單獨(dú)的權(quán)限設(shè)置能夠在更小粒度上控制能被訪問的頁面。一個(gè)控制訪問的常見方法如下:可被所有人查看的頁面放置到一個(gè)文件夾中,而限制只能被站點(diǎn)管理員查看的頁面放置到另一個(gè)文件夾。右鍵單擊限制權(quán)限的文件夾,然后選擇Properties/Securities/Permissions。因?yàn)槲覀兊哪繕?biāo)是保證IIS不能使用IUSR_machinename帳戶匿名訪問限制權(quán)限的文件夾,所以應(yīng)從訪問列表中刪除Everyone組和IUSR_machinename帳戶。將文件放置于兩個(gè)不同的文件夾確保使用了維護(hù)兩個(gè)組的權(quán)限方式,這比一個(gè)文件接一個(gè)文件的進(jìn)行權(quán)限維護(hù)要容易的多。 基于ASP代碼的安全
使用ASP代碼,你能夠?qū)崿F(xiàn)更為專門的安全功能(這比剛剛描述的功能要有趣的多)。例如,一些令人討厭的用戶會(huì)搗亂你的站點(diǎn)。而由于他們的IP地址可以由服務(wù)器活動(dòng)日志中得到,所以你能夠使用下面的代碼禁止該地址訪問:
<%If request.servervariables("REMOTE_ADDR") = "200.200.157.4" then
Response.Buffer = TRUE
Response.Status = ("401 Unauthorized")
Response.End
End If%>
在Active Server Page內(nèi)部具有許多變量可提供有關(guān)發(fā)送請求的瀏覽器的信息,以及有關(guān)IIS自身的信息。(要得到服務(wù)器變量的詳細(xì)列表,請參閱Active Server pages聯(lián)機(jī)幫助。)例如, LOGON_USER命令對于驗(yàn)證用戶會(huì)返回其Domain\Username,對匿名用戶返回空格。然后你能夠使用服務(wù)器端代碼檢查特定用戶并將他們定向到其它頁面。我曾經(jīng)見到過某些公司使用該技術(shù)將競爭對手拒之于他們的Web站點(diǎn)之外。
|