安全性概觀

保護應用程式是持續進行的工作。 開發人員無法絕對保證應用程式可避開所有攻擊,因為您無法預測未來的新科技會帶來哪些類型的攻擊。 反之,也不能因為至目前為止,沒有人察覺 (或公佈) 系統上的安全性漏洞,就表示安全性漏洞確實存在或確實不存在。 您需要在專案的設計階段就進行安全性的規劃,也必須規劃該如何在應用程式的存留期維護安全性。

安全性設計

開發安全的應用程式時,必須面臨的其中一個最大的問題,就是安全性通常是後續補充動作,也就是在完成專案程式碼後才會實際列入考量。 未在一開始就將安全性納入應用程式會導致應用程式變得不安全,因為對應用程式安全性所做的考量太少。

最後一刻才實作安全性,也可能會導致更多的錯誤,因為軟體會在新的限制下毀損,或者必須重新撰寫以納入之前未想到的功能。 每行修改的程式碼都可能會引進新的錯誤。 因此,您應該在開發過程中儘早考慮安全性,以便在開發新功能時一併處理。

威脅模型

除非您了解系統可能遭受的所有潛伏攻擊,否則就無法保護系統。 評估安全性威脅的程序稱為「威脅模型」,這是判斷 ADO.NET 應用程式中是否有安全性漏洞的可能性和分岐的必要程序。

威脅模型是由三個高階步驟所組成:了解敵人的觀點、描繪系統安全性的特徵,以及判斷威脅來源。

威脅模型是一種反覆性的方法,可評估應用程式中的漏洞,找出因為會公開最機密的資料而最具危險性的漏洞。 一旦找出漏洞之後,就要依照嚴重性順序來加以分類,並建立具有優先順序的反制措施來對抗這些威脅。

如需詳細資訊,請參閱以下資源:

資源 描述
安全性工程入口網站上的威脅模型化網站 此網頁上的資源可協助您了解威脅模型程序,並建立可用來確保應用程式安全性的威脅模型。

最小權限的原則

在設計、建立及部署應用程式時,必須假設應用程式將遭受攻擊。 這些攻擊往往來自惡意程式碼,而這些程式碼常藉由執行程式碼的使用者權限而執行。 其他攻擊則可能源自本意良好,但遭到攻擊者利用的程式碼。 在規劃安全性時,請務必假設會發生最糟的狀況。

您可以運用的一種反制措施,是使用最小權限執行並嘗試在程式碼周圍盡可能豎立起防線。 根據最小權限的原則,應該針對完成工作所需的最短期間,將任何指定權限授與最少量的必要程式碼。

建立安全應用程式的最佳做法,是以完全沒有權限開始,然後加入執行特定工作的最少權限。 相反地,如果開始時使用全部的權限,然後再拒絕個別的權限,則會造成難以測試及維護的不安全應用程式,因為可能會因為不小心授與超出必要的權限而導致安全性漏洞。

如需有關保護應用程式的詳細資訊,請參閱下列資源:

資源 描述
設定應用程式的安全性 包含一般安全性主題的連結, 也包含保護分散式應用程式、Web 應用程式、行動應用程式和桌面應用程式等主題的連結。

程式碼存取安全性 (CAS)

程式碼存取安全性 (CAS) 是一種機制,有助於限制程式碼對受保護資源及作業的存取。 在 .NET Framework 中,CAS 可執行下列功能:

  • 定義代表存取各種系統資源之權利的權限和權限集合。

  • 使權限集合與程式碼群組產生關聯,讓系統管理員得以設定安全性原則。

  • 讓程式碼能夠要求執行所需的權限及有用的權限,並可指定程式碼絕對不可擁有的權限。

  • 根據程式碼要求的權限以及安全性原則允許的作業,對每個載入的組件 (Assembly) 授與權限。

  • 讓程式碼得以要求其呼叫端必須具備特定的權限。

  • 使程式碼要求它的呼叫端處理數位簽章,而只允許特定組織或站台的呼叫端可以呼叫受保護的程式碼。

  • 藉由比較呼叫堆疊上授與每個呼叫端的權限與呼叫端必須具備的權限,在執行階段對程式碼強制執行限制。

若要將攻擊成功時所可能發生的損害程度降至最低,請在選擇程式碼的安全性內容時,僅授與完成工作所需資源的存取權。

如需詳細資訊,請參閱以下資源:

資源 描述
程式碼存取安全性和 ADO.NET 從 ADO.NET 應用程式的角度,描述在程式碼存取安全性、以角色為基礎的安全性與部分信任環境之間的互動。
程式碼存取安全性 包含說明 .NET Framework 中的 CAS 的其他主題連結。

資料庫安全性

最小權限的原則也適用於資料來源。 資料庫安全性的一些一般方針包括:

  • 建立具有最低可能權限的帳戶。

  • 不允許使用者只為了讓程式碼運作就存取管理帳戶。

  • 不將伺服器端的錯誤訊息傳回至用戶端應用程式。

  • 驗證所有在用戶端及伺服器端的輸入。

  • 使用參數化命令並避免動態 SQL 陳述式。

  • 為正在使用的資料庫啟用安全性稽核和記錄功能,使您可以接到任何安全性破壞的警示。

如需詳細資訊,請參閱以下資源:

資源 描述
SQL Server 安全性 使用應用程式案例提供 SQL Server 安全性概觀,可針對建立以 SQL Server 為目標的安全 ADO.NET 應用程式提供指引。
資料存取策略的建議 提供存取資料及執行資料庫作業的建議。

安全性原則和管理

如果程式碼存取安全性 (CAS) 原則管理不當,可能會造成安全上的弱點。 部署應用程式後,必須使用監視安全性的技術,並評估新威脅所帶來的風險。

如需詳細資訊,請參閱以下資源:

資源 描述
安全性原則管理 提供建立和管理安全性原則的資訊。
安全性原則最佳做法 提供說明如何管理安全性原則的連結。

另請參閱