程式碼存取安全性

更新:2007 年 11 月

今日高度網路化的電腦系統經常暴露於各種不同來源的程式碼下,其中也可能包括不明的來源。程式碼可以附加在電子郵件上、包含於文件中或由網際網路下載。很遺憾地,許多電腦使用者仍然直接受到惡意行動程式碼攻擊,包含病毒和電腦蠕蟲,這些都可以危害或損毀資料並浪費時間和金錢。

大部分的一般安全機制都是依據使用者的登入認證 (一般為密碼) 來授與權限,並限制使用者允許存取的來源 (通常為目錄和檔案)。但是,這個方法無法解決幾個問題:使用者取得程式碼的來源非常多,有些來源可能不可靠;程式碼可能內含錯誤 (Bug) 或弱點,可能會被惡意程式所使用;使用者不知道程式碼會執行什麼動作。因此,電腦系統可能因此損壞,且當謹慎和可靠的使用者執行惡意或含有錯誤的軟體時,即可能危害到電腦系統並洩露私人資料。大多數作業系統的安全機制都會要求程式碼的每一部分必須完全受到信任才可以執行,Web 網頁上的指令碼可能不需要。因此,我們仍然需要一項更有效的應用安全性機制,以允許某一個電腦系統上的程式碼可以在受到保護的情況下,於另一個系統上執行,即使這兩個系統間並沒有信任關係存在。

為了保護電腦系統不受惡意行動程式碼攻擊,讓來源不明的程式碼在受到保護之下執行,並協助防止受信任的程式碼有意或無意間危害到安全性,.NET Framework 提供了一項稱為程式碼存取安全性的安全機制。程式碼存取安全性依程式碼的來源和程式碼本身的其他部分,分別給與程式碼不同程度的信任等級。程式碼存取安全性也可以提高程式碼的各種信任層級,使必須完全受信任才可執行的程式碼數量減少。使用程式碼存取安全性可以減少您的程式碼被惡意或充滿錯誤的程式碼不當使用的機會。它可以減輕您的負擔,因為您可以指定程式碼允許執行的作業範圍,以及不允許程式碼執行的作業。程式碼存取安全性也可以協助降低由安全性不足的程式碼所產生的危害。

定位於一般語言執行階段的所有 Managed 程式碼也可以從程式碼存取安全性獲得益處,即使該程式碼並沒有執行單一的程式碼存取安全性呼叫。然而,所有的應用程式都應該遵守程式碼存取的要求,如程式碼存取安全性的基本概念中所述。

在本節中

相關章節