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