程式碼存取安全性的基本概念
以 Common Language Runtime 為目標的每一個應用程式 (即每個 Managed 應用程式) 都必須和 Runtime 的安全性系統互動。 載入 Managed 應用程式時,其主機會自動授與其一組使用權限。 這些權限是由本機安全性設定或應用程式所在的沙箱決定。 依使用權限不同,應用程式可以正常執行或產生安全性例外狀況。
桌面應用程式的預設主機對程式碼的執行授與完全信任權限。 因此,若您的應用程式以桌面為目標,則該應用程式具有無限制的使用權限集。 其他主機或沙箱對應用程式提供受限制的使用權限。 因為使用權限集根據主機不同而不同,所以必須將您的應用程式設計為僅使用您的目標主機所允許的使用權限
若要撰寫出以 Common Language Runtime 為目標的有效應用程式,必須熟悉以下的程式碼存取安全性概念:
撰寫型別安全程式碼:若要使程式碼可以受益於程式碼存取安全性,您必須使用可以產生可驗證型別安全程式碼的編譯器 (Compiler)。 如需詳細資訊,請參閱撰寫可驗證的型別安全程式碼。
命令式與宣告式語法:與 Runtime 安全性系統的互動是使用命令式和宣告式安全性呼叫來執行。 宣告式呼叫會使用屬性 (Attribute) 來執行;而命令式呼叫則使用您程式碼內的類別新執行個體來執行。 某些呼叫只可以由命令式來執行,某些呼叫只可以由宣告式來執行,還有一些呼叫可以由上述任何一種方式執行。 如需詳細資訊,請參閱安全性語法。
使用安全類別庫:類別庫會使用程式碼存取安全性,來指定存取類別庫時所需的使用權限。 您應該注意您的程式碼用來存取任何程式庫所需的使用權限。
透明程式碼:在 .NET Framework 4 版 及更新版本中,除了識別特定使用權限外,您還必須判斷是否您的程式碼應以安全性透明方式執行。 安全性透明程式碼無法呼叫識別為安全性關鍵的型別或成員。 該規則適用於完全信任應用程式以及部分信任應用程式。 如需詳細資訊,請參閱使用安全類別庫和安全性透明的程式碼。