今天高度串連的電腦系統經常暴露在源自於各種各樣的, 不可預知來源的代碼之下. 代碼可以被附著在電子郵件中, 包含在文檔中, 或者在網際網路中被下載. 不幸的是, 很多電腦的使用者都經曆過第一手的惡意的動態代碼, 包括病毒, 蠕蟲, 這些可以破壞資料, 耗費時間和金錢.
大多數安全機制會基於使用者登入的憑證(通常是密碼)來賦予相應的許可權來訪問受限制的資源(通常是目錄和檔案). 然而, 這種方式在處理一些情況的時候不靈光: 使用者從多種途徑獲得代碼源, 有些遠是靠不住的; 代碼可以包含bug或者弱點, 從而使得它可以被惡意代碼攻擊; 代碼有時會做一些使用者不知道代碼會做的事情. 所以呢, 電腦系統在可信任的使用者運行惡意軟體或錯誤軟體的時候可以被破壞, 私人資料可以泄露. 多數的作業系統的安全機制要求每一段代碼必須被完全信任才能運行, 除非有可能是網頁中的指令碼. 所以, 需要有一種廣泛適用的安全機制, 允許一個電腦系統中的代碼可以在另一個受保護的系統上執行, 即使在系統之間並不存在信任關係.
為了協助保護電腦系統不受惡意的可行動程式碼的侵害, 為了允許從不明來源的代碼可以在受保護的系統上運行, 同時也協助受信任的代碼被故意及非故意的安全折中所阻礙, .NET Framework提供了一個叫做code access security的安全機制. Code access security還加強了對代碼信任的等級的區分, 這種區分減小了為完全信任地運行代碼而要寫的代碼量. 使用code access security能夠減小你代碼被誤用, 或被惡意代碼使用, 或是被包含錯誤的代碼的使用的可能性. 它可以減輕你的責任因為你可以指定你的代碼被允許進行的操作和你的代碼不被允許進行的操作. code access security能夠協助最小化你代碼中的安全弱點可能造成的破壞的後果.
所有的目標是common language runtime的Managed 程式碼都會從code access security中獲得好處, 即使那代碼並不進行一行code access security的調用. 然而, 所有的應用程式都應該請求code access, 如同在Code Access Security Basics中描述的一樣.
摘譯自:
.NET Framework Developer's Guide - Code Access Security
http://msdn.microsoft.com/en-us/library/930b76w0%28VS.71%29.aspx