1. 程式人生 > >Web應用程式的基本安全實踐

Web應用程式的基本安全實踐

 

建立安全Web應用程式的主題非常廣泛。它需要研究以瞭解安全漏洞。您還需要熟悉Windows、.NET框架和ASP.NET的安全設施。最後,有必要了解如何使用這些安全特性來對付威脅。

即使您沒有安全方面的經驗,也應採取基本措施來保護Web應用程式。以下列表提供了適用於所有Web應用程式且應遵循的最低安全性準則:

一般Web應用程式安全建議

以最少的特權執行應用程式

瞭解您的使用者

防止惡意使用者輸入

安全訪問資料庫

建立安全錯誤訊息

安全地保密

安全使用Cookies

防範拒絕服務威脅

有關幫助您設計,開發,配置和部署更安全的ASP.NET Web應用程式的全面詳細的安全指南,請參閱Microsoft模式和實踐Web站點上提供的安全模組。

 

一般Web應用程式安全建議

如果惡意使用者可以使用簡單的方法訪問您的計算機,即使最複雜的應用程式安全性也會失敗。請遵循以下準則:

經常備份,並保持備份物理安全。

保持Web伺服器計算機的物理安全,以便未經授權的使用者無法訪問,關閉或接受它。

使用Windows NTFS檔案系統,而不是FAT32。 NTFS提供比FAT32更多的安全性。有關詳細資訊,請參閱Windows文件。

使用強密碼保護Web伺服器計算機和同一網路上的所有計算機。

安全的IIS。有關詳細資訊,請參閱Microsoft TechNet安全中心網站。

關閉未使用的埠並關閉未使用的服務。

執行監控入站和出站流量的病毒檢查程式。

建立並實施一項政策,禁止使用者將密碼記錄在易於查詢的位置。

使用防火牆。有關建議,請參閱Microsoft安全站點上的Microsoft防火牆指南。

從Microsoft和其他供應商安裝最新的安全修補程式。例如,請參閱Microsoft TechNet安全中心網站,其中列出了所有Microsoft產品的最新安全公告。其他供應商有類似的網站。

使用Windows事件日誌記錄並經常檢查日誌中是否存在可疑活動。這包括重複嘗試登入系統以及針對Web伺服器的大量請求。

 

 

執行具有最小許可權的應用程式

當應用程式執行時,它在本地計算機上和遠端計算機上具有特定特權的上下文中執行。有關配置應用程式標識的資訊,請參閱配置ASP.NET程序標識。若要以最少的特權執行,請遵循以下準則:

Configuring ASP.NET Process Identity

不要使用系統使用者(管理員)的身份執行應用程式。

在具有最低實際許可權的使用者的上下文中執行該應用程式。

設定應用程式所需的所有資源的許可權(訪問控制列表或ACL)。使用最不允許的設定。例如,如果在應用程式中實用,則將檔案設定為只讀。有關ASP.NET應用程式標識所需的最低ACL許可權的列表,請參閱ASP.NET必需訪問控制列表(ACL)

將Web應用程式的檔案儲存在應用程式根目錄下的資料夾中。不允許使用者選擇為應用程式中的任何檔案訪問指定路徑。這有助於防止使用者訪問伺服器的根目錄。

 

瞭解您的使用者

在許多應用程式中,使用者匿名訪問站點(無需提供憑據)。如果是,則應用程式通過在預定義使用者的上下文中執行來訪問資源。預設情況下,此上下文是Web伺服器計算機上的本地ASPNET使用者(在Windows 2000或Windows XP上)或NETWORK SERVICE使用者(在Windows Server 2003上)。要限制對經過身份驗證的使用者的訪問,請遵循以下準則:

如果您的應用程式是Intranet應用程式,請將其配置為使用Windows整合安全性。這樣,使用者的登入憑據可用於訪問資源。有關更多資訊,請參閱ASP.NET模擬。

切勿回顯(顯示)未經過濾的使用者輸入。在顯示不受信任的資訊之前,編碼HTML以將可能有害的指令碼轉換為顯示字串。

永遠不要在資料庫中儲存未過濾的使用者輸入。

如果您想接受來自使用者的一些HTML,請手動篩選它。在過濾器中,顯式地定義您將接受的內容。不要建立試圖過濾掉惡意輸入的過濾器;很難預測所有可能的惡意輸入。

不要假設從HTTP請求頭(在HttpRequest物件中)獲得的資訊是安全的。對查詢字串、cookie等使用安全措施。請注意,瀏覽器向伺服器報告的資訊(使用者代理資訊)可能被欺騙,以防在應用程式中發生重要情況。

如果可能,請勿將敏感資訊儲存在可從瀏覽器訪問的位置,例如隱藏欄位或Cookie。例如,不要在cookie中儲存密碼。

注意:檢視狀態以編碼格式儲存在隱藏欄位中。預設情況下,它包含訊息身份驗證程式碼(MAC),以便頁面可以確定檢視狀態是否被篡改。如果敏感資訊儲存在檢視狀態,則通過將頁面的ViewStateEncryptionMode屬性設定為true進行加密。

 

安全地訪問資料庫

資料庫通常具有自己的安全性。安全Web應用程式的一個重要方面是為應用程式設計一種安全訪問資料庫的方法。請遵循以下準則:

使用資料庫的固有安全性來限制誰可以訪問資料庫資源。確切的策略取決於您的資料庫和您的應用程式:

如果在您的應用程式中可行,請使用整合安全性,以便只有經過Windows身份驗證的使用者才能訪問資料庫。整合安全性比將顯式憑據傳遞到資料庫更安全。

如果您的應用程式涉及匿名訪問,請建立許可權非常有限的單個使用者,並通過以此使用者身份進行連線來執行查詢。

不要通過連線涉及使用者輸入的字串來建立SQL語句。而是建立引數化查詢並使用使用者輸入來設定引數值。

如果必須在某個地方儲存使用者名稱和密碼作為資料庫登入憑據,則將它們儲存在Web.config檔案中,並用受保護的配置保護該檔案。有關詳細資訊,請參閱使用受保護的配置加密配置資訊。

有關安全訪問資料的更多資訊,請參閱保護資料訪問和保護ADO.NET應用程式。