千萬不要輕視正確配置安全設置的重要性。如果不正確配置安全設置,不但會使您的 ASP 應用程序遭受不必要的篡改,而且會妨礙正當用戶訪問您的 .ASP 文件。
Web 服務器提供了各種方法來保護您的 ASP 應用程序免受未授權的訪問和篡改。在您讀完本主題下的安全信息之後,請花一定的時間仔細檢查一下您的 Windows NT 和 Web 服務器安全性文檔。
NTFS 權限
您可以通過為單獨的文件和目錄應用 NTFS 訪問權限來保護 ASP 應用程序文件。NTFS 權限是 Web 服務器安全性的基礎,它定義了一個或一組用戶訪問文件和目錄的不同級別。當擁有 Windows NT 有效帳號的用戶試圖訪問一個有權限限制的文件時,計算機將檢查文件的訪問控制表 (ACL)。該表定義了不同用戶和用戶組所被賦予的權限。如果用戶的帳號具有打開文件的權限,計算機則允許該用戶訪問文件。例如,Web 服務器上的 Web 應用程序的所有者需要有“更改”權限來查看、更改和刪除應用程序的 .ASP 文件。但是,訪問該應用程序的公共用戶應僅被授予“只讀”權限,以便將其限制為只能查看而不能更改應用程序的 Web 頁。
維護 Global.asa 的安全
為了充分保護 ASP 應用程序,一定要在應用程序的 Global.asa 文件上為適當的用戶或用戶組設置 NTFS 文件權限。如果 Global.asa 包含向浏覽器返回信息的命令而您沒有保護 Global.asa 文件,則信息將被返回給浏覽器,即便應用程序的其他文件被保護。
注意 一定要對應用程序的文件應用統一的 NTFS 權限。例如,如果您不小心過度限制了一應用程序需要包含的文件的 NTFS 權限,則用戶可能無法查看或運行該應用程序。為了防止此類問題,在為您的應用程序分配 NTFS 權限之前應仔細計劃。
Web 服務器權限
您可以通過配置您的 Web 服務器的權限來限制所有用戶查看、運行和操作您的 ASP 頁的方式。不同於 NTFS 權限提供的控制特定用戶對應用程序文件和目錄的訪問方式, Web 服務器權限應用於所有用戶,並且不區分用戶帳號的類型。
對於要運行您的 ASP 應用程序的用戶,在設置 Web 服務器權限時,必須遵循下列原則:
對包含 .ASP 文件的虛擬目錄允許“讀”或“腳本”權限。
對 .ASP 文件和其他包含腳本的文件(如 .htm 文件等)所在的虛目錄允許“讀”和“腳本”權限。
對包含 .ASP 文件和其他需要“執行”權限才能運行的文件(如 .exe 和 .dll 文件等)的虛目錄允許“讀”和“執行”權限。
腳本映射文件
應用程序的腳本映射保證了 Web 服務器不會意外地下載 .asp 文件的源代碼。例如,即使您為包含了某個 .asp 文件的目錄設置了“讀”權限,只要該 .ASP 文件隸屬於某個腳本映射應用程序,那麼您的 Web 服務器就不會將該文件的源代碼返回給用戶。
CookIE 安全性
ASP 使用 sessionID cookie 跟蹤應用程序訪問或會話期間特定的 Web 浏覽器的信息。這就是說,帶有相應的 cookIE 的 HTTP 請求被認為是來自同一 Web 浏覽器。Web 服務器可以使用 SessionID cookIEs 配置帶有用戶特定會話信息的 ASP 應用程序。例如,如果您的應用程序是一個允許用戶選擇和購買 CD 唱盤的聯機音樂商店,就可以用 SessionID 跟蹤用戶漫游整個應用程序時的選擇。
SessionID 能否被黑客猜中?
為了防止計算機黑客猜中 SessionID cookIE 並獲得對合法用戶的會話變量的訪問,Web 服務器為每個 SessionID 指派一個隨機生成號碼。每當用戶的 Web 浏覽器返回一個 SessionID cookIE 時,服務器取出 SessionID 和被賦予的數字,接著檢查是否與存儲在服務器上的生成號碼一致。若兩個號碼一致,將允許用戶訪問會話變量。這一技術的有效性在於被賦予的數字的長度(64 位),此長度使計算機黑客猜中 SessionID 從而竊取用戶的活動會話的可能性幾乎為 0。
加密重要的 SessionID CookIE
截獲了用戶 sessionID cookie 的計算機黑客可以使用此 cookIE 假冒該用戶。如果 ASP 應用程序包含私人信息,信用卡或銀行帳戶號碼,擁有竊取的 cookIE 的計算機黑客就可以在應用程序中開始一個活動會話並獲取這些信息。您可以通過對您的 Web 服務器和用戶的浏覽器間的通訊鏈路加密來防止 SessionID cookIE 被截獲。
使用身份驗證機制保護被限制的 ASP 內容
您可以要求每個試圖訪問被限制的 ASP 內容的用戶必須要有有效的 Windows NT 帳號的用戶名和密碼。每當用戶試圖訪問被限制的內容時,Web 服務器將進行身份驗證,即確認用戶身份,以檢查用戶是否擁有有效的 Windows NT 帳號。
Web 服務器支持以下幾種身份驗證方式:
基本身份驗證 提示用戶輸入用戶名和密碼。
Windows NT 請求/響應式身份驗證 從用戶的 Web 浏覽器通過加密方式獲取用戶身份信息。
然而,Web 服務器僅當禁止匿名訪問或 Windows NT 文件系統的權限限制匿名訪問時才驗證用戶身份。
保護元數據庫
訪問元數據庫的 ASP 腳本需要 Web 服務器所運行的計算機的管理員權限。在從遠程計算機上運行這些腳本時,須經已通過身份驗證的連接,如使用 Windows NT 請求/響應驗證方式進行連接。應該為管理級 .ASP 文件創建一個服務器或目錄並將其目錄安全驗證方式設置為 Windows NT 請求/響應式身份驗證。目前,僅 Microsoft Internet Explorer version 2.0 或更高版本支持 Windows NT 請求/響應式身份驗證。
使用 SSL 維護應用程序的安全
Secure Sockets Layer (SSL) 3.0 協議作為 Web 服務器安全特性,提供了一種安全的虛擬透明方式來建立與用戶的加密通訊連接。SSL 保證了 Web 內容的驗證,並能可靠地確認訪問被限制的 Web 站點的用戶的身份。
通過 SSL,您可以要求試圖訪問被限制的 ASP 應用程序的用戶與您的服務器建立一個加密連接;以防用戶與應用程序間交換的重要信息被截取。
維護包含文件的安全
如果您從位於沒有保護的虛擬根目錄中的 .ASP 文件中包含了位於啟用了 SSL 的目錄中的文件,則 SSL 將不被應用於被包含文件。因此,為了保證應用 SSL,應確保包含及被包含的文件都位於啟用了 SSL 的目錄中。
客戶資格認證
控制對您的 ASP 應用程序訪問的一種十分安全的方法是要求用戶使用客戶資格登錄。客戶資格是包含用戶身份信息的數字身份證,它的作用與傳統的諸如護照或駕駛執照等身份證明相同。用戶通常從委托的第三方組織獲得客戶資格,第三方組織在發放資格證之前確認用戶的身份信息。(通常,這類組織要求姓名、地址、電話號碼及所在組織名稱;此類信息的詳細程度隨給予的身份等級而異。)
每當用戶試圖登錄到需要資格驗證的應用程序時,用戶的 Web 浏覽器會自動向服務器發送用戶資格。如果 Web 服務器的 Secure Sockets Layer (SSL) 資格映射特性配置正確,那麼服務器就可以在許可用戶對 ASP 應用程序訪問之前對其身份進行確認。
用於處理資格證明的 ASP 腳本
作為 ASP 應用程序開發人員,您可以編寫腳本來檢查資格是否存在並讀取資格字段。例如,您可以從資格證明中訪問用戶名字段和公司名字段。Active Server Pages 在 Request 對象的 ClIEntCertificate 集合中保存資格信息。
必須將 Web 服務器配置為接受或需要客戶資格,然後才能通過 ASP 處理客戶資格;否則,ClIEntCertificate 集合將為空。