Dot-Net

“程式碼訪問安全”是否在任何現實世界中使用?

  • October 14, 2009

警告:

自從提出此問題以來,較新版本的 .Net 和 .Net 核心已刪除和/或更改了“程式碼訪問安全性”(CAS)。

原始問題:

我正在準備70-536 .NET Framework - 應用程序開發基礎考試,因為我已經程式 .net 很多年了,這應該不難!

但是我必須了解“程式碼訪問安全性”(CAS),因為我從來沒有需要使用或配置它,我想知道是否有其他人找到了它的實際用途?

請提供您何時使用 CAS 的範例,並且它已成為解決方案的一部分,而不是問題的一部分。

(到目前為止,其他所有事情都與我多年 .NET 程式中必須完成的任務有關)


相關問題:


到目前為止的結果。

  • 當您託管第 3 方程式碼時,CAS 很有用。例如,網路託管公司可以使用它來阻止客戶的 Asp.net 程式碼對伺服器造成損害。(當 .NET 被用作 VBA 的替代品時,Office 也會使用它)
  • 到目前為止,它在 Microsoft 應用程序之外使用的唯一詳細範例是:

我最近做的一個項目有類似的東西:允許使用者上傳一個庫,並測試它的性能(“誰創造了最好的算法”)。不用說,我們非常需要 CAS。

  • CAS 似乎對獲得 JITDC 認證很有用,就像美國國防部一樣,但是我不知道 CAS 是否有任何實際價值,或者它是否只是打勾。

(如果您需要繞過使用 CAS 的主機並且您在它們的機器上擁有管理員權限,您可以將您的程序集放在 GAC 中。)

展望未來,CAS 在 .net 4 中稍微不那麼複雜


至少看起來新的微軟考試不會有包含 CAS 的“基礎”考試。我不知道它是否會進入新的 Winforms/WPF 考試。

我經常在“現實世界”中遇到程式碼訪問安全問題,通常是在我最不期待的時候。在某種程度上,SilverLight 將是它的一個出色的現實應用程序,如果 SilverLight最終選擇不使用 CAS的話。

託管服務提供商

您在實際中看到它的地方是需要安全環境的地方:當然是 ASP.NET 本身,但是 ASP.NET 託管服務提供商使用經過修改的安全模型來防止對其寶貴系統的入侵。我知道 Webhost4Life 使用它的事實(在他們的網站上沒有關於它的資訊,但我與他們合作過,它就在那裡,真的)。進一步看,其他 ASP.NET 託管服務提供商也這樣做,但他們也不是很清楚:godaddy.com 上的執行緒不想更改 CAS(不清楚支持什麼,不支持什麼)或關於 1&1 的相關討論. 一些雲託管站點 (rackspacecloud) 更進一步,並*“與 Microsoft 合作修改了完全信任級別”*,無論如何。

簡而言之:如果您找到一個 ASP.NET 主機,他們很可能使用 CAS 來阻止您做他們不希望您做的事情。他們甚至可以使用它來區分“基本”(許多限制)託管和“企業”(很少限制)託管,這為 CAS 賦予了完全不同的含義。

CAS的其他應用

對於我自己遇到的一些真實情況來說,就這麼多。我最近做的一個項目有類似的東西:允許使用者上傳一個庫,並測試它的性能(“誰創造了最好的算法”)。不用說,我們非常需要 CAS。其他範例或有趣的資源:

對於您完全控制自己的任何情況,您建構自己的應用程序和程式碼(或建構它)並且完全控制您的系統,我認為您不會經常需要 CAS。當您從不太受信任的來源執行程式碼時(這基本上是您無法完全控制的所有內容),您將更多地使用它。

CAS 與 ClickOnce

預設 CAS 設置限制從網路共享或其他非本地源執行的程式碼的功能。這是有道理的,但是嚴格的限制使得很難有一個分佈式應用程序的中央儲存庫。.NET 2.0 引入了 ClickOnce,它應該提高安全性(在此處討論)。

ClickOnce 本身使用 CAS來防止安裝程序呼叫系統函式。因此,我相信它可以說是最知名的依賴於 CAS 的應用程序

要點是:您需要了解 CAS 才能創建可以直接從共享執行的東西,或者您完全忽略它並使用 ClickOnce。

微軟對 CAS 的調查

2005 年,微軟召集了一項調查,找出 CAS 為何如此不受歡迎,希望對其進行改進,使其更好地適用。不幸的是,我找不到實際的調查結果,除了這篇文章詳細說明了為什麼 CAS 未得到充分利用。

另一個世界的CAS

然而,那篇文章確實指出了一個有趣的領域:CAS 應用於另一個世界:Unix / Linux。他們不叫它 CAS,而是叫它BitFrost。對於現實世界的應用程序來說,情況如何:“每個孩子一台筆記型電腦”項目,它依賴 BitFrost 作為傳統 Unix 安全模型的替代品。

***更新:***作為 BitFrost 的 Unix/Linux 中的 CAS 部分和調查部分。

**更新:**添加了 CAS 與 ClickOnce 部分

**更新:**添加了使用 CAS 的資源列表(並對所有這些更新表示歉意!)

引用自:https://stackoverflow.com/questions/1566934