當您建置元件時,您可以指定元件執行所需的一組許可權。 是否授予或不授予某程序集特定許可權是基於證據的。
證據有兩種不同的使用方式:
輸入辨識項會與載入器收集的辨識項合併,以建立用於原則解析的最後一組辨識項。 使用此語意的方法包括 Assembly.Load、 Assembly.LoadFrom 和 Activator.CreateInstance。
輸入證據將以未變更方式作為用於政策決策的最終一組證據。 使用此語意的方法包括 Assembly.Load(byte[]) 和 AppDomain.DefineDynamicAssembly()。
您可以在元件執行所在的電腦上設定 安全策略 來授與選擇性許可權。 如果您想要讓程式代碼處理所有潛在的安全性例外狀況,您可以執行下列其中一項作業:
針對程式代碼必須擁有的所有許可權插入許可權要求,並在未授與許可權時,前置處理可能發生的載入失敗。
請勿使用許可權要求來取得程序代碼可能需要的許可權,但若未授與許可權,請準備好處理安全性例外狀況。
備註
安全性是一個複雜的區域,而且您有許多可供選擇的選項。 如需詳細資訊,請參閱 重要安全性概念。
在載入時,元件的辨識項會做為安全策略的輸入。 安全性政策由企業和電腦的系統管理員以及使用者原則設定所建立,並決定所有受管理的程式碼在執行時被授予的許可權集。 您可以為組件的發行者建立安全策略(如果具有簽署工具產生的簽章);還可以為組件下載自的網站和區域(這是 Internet Explorer 的概念),或為組件的強名稱建立安全策略。 例如,計算機的系統管理員可以建立安全策略,允許從網站下載並由指定軟體公司簽署的所有程式代碼存取計算機上的資料庫,但不會授與寫入計算機磁碟的存取權。
強名稱元件和簽署工具
警告
請勿依賴強名稱的安全性。 它們僅提供唯一的身分識別。
您可以使用兩種不同但互補的方法簽署元件:使用強名稱或使用 SignTool.exe (簽署工具)。 使用強名稱簽署元件會將公鑰加密新增至包含元件指令清單的檔案。 強名稱簽署有助於驗證名稱的唯一性,防止名稱欺騙,並在解決參考時為呼叫者提供某種身分識別。
沒有任何信任層級與強名稱相關聯,因此 SignTool.exe(簽署工具) 很重要。 這兩個簽署工具需要發行者向第三方授權單位證明其身分,並取得憑證。 接著,此憑證會內嵌在您的檔案中,而且可由系統管理員用來決定是否信任程式代碼的真實性。
您可以將強名稱與使用 SignTool.exe (Sign Tool) 建立的數位簽名提供給元件,也可以單獨使用。 這兩個簽署工具一次只能簽署一個檔案;針對多檔元件,您可以簽署包含元件指令清單的檔案。 強名稱會儲存在包含元件指令清單的檔案中,但使用 SignTool.exe (Sign Tool) 建立的簽章會儲存在包含元件指令清單的可攜式可執行檔 (PE) 檔案中的保留位置。 當您已經有信任階層依賴 SignTool.exe(簽署工具)產生的簽章時,或是當您的原則只使用密鑰部分且不會檢查信任鏈結時,可以使用SignTool.exe 簽署(簽署工具)來簽署元件。
備註
在元件上使用強名稱與簽署工具簽章時,必須先指派強名稱。
通用語言執行環境也會執行哈希驗證,組件清單包含所有構成該元件的檔案清單,包括在清單建置時每個檔案的哈希。 載入每個檔案時,其內容會進行哈希處理,並與指令清單中儲存的哈希值進行比較。 如果兩個哈希不相符,元件就無法載入。
使用 SignTool.exe (簽署工具) 的強式命名和簽署,可透過數位簽名和憑證保證完整性。 所有提及的技術,即哈希驗證、強式命名,以及使用 SignTool.exe (Sign Tool) 簽署,共同合作,以確保元件不會以任何方式改變。
另請參閱
- 強名稱元件
- .NET 中的 組件
- SignTool.exe (簽署工具)