共用方式為


安全性概觀

保護應用程式是一個持續的過程。 開發人員永遠不會有一點可以保證應用程式不受所有攻擊的安全,因為無法預測新技術將帶來什麼樣的未來攻擊。 相反地,只是因為系統中還沒有人發現(或發佈)安全性缺陷,並不意味著沒有存在或可能存在。 您必須在專案的設計階段規劃安全性,以及規劃如何在應用程式的存留期內維護安全性。

安全性設計

在開發安全應用程式時,最大的問題之一就是安全性常常被視為次要,通常是在專案的程式編碼完成後才被考慮和實作。 一開始就不將安全性建置到應用程式中會導致不安全的應用程式,因為對應用程式的安全沒有多少考慮。

最後一分鐘的安全性實作會導致更多錯誤,因為軟體在新的限制下中斷,或必須重寫以容納非預期的功能。 每一行修訂的程式代碼都包含引進新 Bug 的可能性。 基於這個理由,您應該在開發程式初期考慮安全性,以便與新功能的開發一起繼續。

威脅模型

除非您了解系統暴露的所有潛在攻擊,否則您無法保護系統免受攻擊。 評估安全性威脅的程式,稱為 威脅模型化,必須判斷 ADO.NET 應用程式中安全性缺口的可能性和後果。

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

威脅模型化是評估應用程式中弱點的反覆方法,可找出最危險的弱點,因為它們會公開最敏感的數據。 識別弱點之後,您可以依嚴重性順序將它們排名,並建立一組優先順序的對策來對抗威脅。

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

資源 說明
安全工程入口上的威脅建模網站 此頁面上的資源將協助您了解威脅模型化程式,並建置可用來保護您自己的應用程式的威脅模型

最低許可權原則

當您設計、建置及部署應用程式時,必須假設您的應用程式會受到攻擊。 這些攻擊通常來自以執行程式碼的使用者許可權執行的惡意代碼。 其他可能來源於被攻擊者利用的意圖良好的程式碼。 規劃安全性時,請一律假設會發生最壞的情況。

您可以採取的一個對策是以最低權限運行,以便在您的程式代碼周圍設置多重防護。 最低許可權原則表示,任何指定的許可權都應該被授與在最短時間內完成作業所需的最少程式代碼數量。

建立安全應用程式的最佳做法是一開始完全沒有許可權,然後為執行的特定工作新增最窄的許可權。 相較之下,從所有許可權開始,然後拒絕個別許可權會導致難以測試和維護的不安全應用程式,因為安全性漏洞可能來自無意中授與比必要許可權更多的許可權。

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

資源 說明
保護應用程式 包含一般安全性主題的連結。 也包含保護分散式應用程式、Web 應用程式、行動應用程式和傳統型應用程式之主題的連結。

程式碼存取安全性 (CAS)

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

  • 定義許可權和許可權集合,代表存取各種系統資源的許可權。

  • 可讓系統管理員設定安全策略,方法是將許可權集與程式代碼群組(程序代碼群組)產生關聯。

  • 可讓程式代碼要求其執行所需的許可權,及希望擁有的有用許可權,並指定程式代碼絕對不能擁有的許可權。

  • 根據程式代碼要求的許可權,以及安全策略允許的作業,將許可權授與載入的每個元件。

  • 可讓程式代碼要求其呼叫端具有特定許可權。

  • 可讓程式代碼要求其呼叫端擁有數字簽名,因此只允許來自特定組織或網站的來電者呼叫受保護的程序代碼。

  • 透過比較呼叫堆疊中每位呼叫者的權限與呼叫者必須擁有的權限,來強制執行執行時的程式碼限制。

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

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

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

資料庫安全性

最低許可權原則也適用於您的數據源。 資料庫安全性的一些一般指導方針包括:

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

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

  • 請勿將伺服器端錯誤訊息傳回用戶端應用程式。

  • 驗證客戶端和伺服器的所有輸入。

  • 使用參數化命令並避免動態 SQL 語句。

  • 針對您所使用的資料庫啟用安全性稽核和記錄,以便收到任何安全性缺口的警示。

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

資源 說明
SQL Server 安全性 提供 SQL Server 安全性的概觀,其中包含應用程式案例,提供建立以 SQL Server 為目標之安全 ADO.NET 應用程式的指引。
數據存取策略的建議 提供存取數據和執行資料庫作業的建議。

安全策略和管理

不當管理程式代碼存取安全性 (CAS) 原則可能會造成安全性弱點。 部署應用程式之後,應該使用監視安全性的技術,並在出現新的威脅時評估風險。

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

資源 說明
安全策略管理 提供有關建立和管理安全策略的資訊。
安全策略最佳做法 提供描述如何管理安全策略的連結。

另請參閱