安全|程式
千萬不要輕視正確配置安全設定的重要性。如果不正確配置安全設定,不但會使您的 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 跟蹤應用程式訪問或會話期間特定的 網頁瀏覽器的資訊。這就是說,帶有相應的 cookie 的 HTTP 要求被認為是來自同一 網頁瀏覽器。Web 服務器可以使用 SessionID cookies 配置帶有使用者特定會話資訊的 ASP 應用程式。例如,如果您的應用程式是一個允許使用者選擇和購買 CD 唱盤的聯機音樂市集,就可以用 SessionID 跟蹤使用者漫遊整個應用程式時的選擇。
SessionID 能否被駭客猜中?
為了防止電腦駭客猜中 SessionID cookie 並獲得對合法使用者的會話變數的訪問,Web 服務器為每個 SessionID 指派一個隨機組建編號碼。每當使用者的 網頁瀏覽器返回一個 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 服務器僅當禁止匿名訪問或 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 服務器的 Secure Sockets Layer (SSL) 資格映射特性配置正確,那麼伺服器就可以在許可使用者對 ASP 應用程式訪問之前對其身份進行確認。
用於處理資格證明的 ASP 指令碼
作為 ASP 應用程式開發人員,您可以編寫指令碼來檢查資格是否存在並讀取資格欄位。例如,您可以從資格證明中訪問使用者名稱欄位和公司名欄位。Active Server Pages 在 Request 對象的 ClientCertificate 集合中儲存資格資訊。
必須將 Web 服務器配置為接受或需要客戶資格,然後才能通過 ASP 處理客戶資格;否則,ClientCertificate 集合將為空白。