關鍵字:.NET 框架 安全性
概述
在過去的相當長一段時間內,計算機及信息犯罪的比例正在逐漸升高。美國聯邦調查局的計算機安全組織在2001年的研究調查中發現85%企業的企業安全受到侵害。在對這些企業進行調查之后提出的財物損失報告中指出,合計損失為3億7千7百萬美元,比起2000年的2億6千5百萬美金增加了42%。由此可清楚的看出,計算機及信息犯罪的發生次數越來越頻繁,其所造成的損失也越來越大,另外,犯罪的手段也越來越豐富,令企業安全人員防不勝防。因此企業必須有所行動來保護有價值的信息資產。自然而然的,安全性在現在的程序開發中越來越成為一個不可忽視的問題。
傳統的安全模型將安全性建立在用戶以及用戶組的機制上來提供隔離和訪問控制。這就意味著用戶要么可以運行全部代碼,要么都不能運行。而這正是現在大多數操作系統采取的安全模型,即使現在看來這種機制也是很有效的,但是深入思考之后我們可以發現這種機制存在的假設是所有的代碼都具有相同的信任程度。當所有的代碼都是來自你或者你的系統管理員,那么這種假設是行之有效的。但是現在大多數計算機都連上了Internet之后,這種"都行"或者"都不行"的方式就不那么好了。.NET框架提供了全面的安全系統,足以應付現在已有的大多數安全性問題。在.NET框架中提供了與傳統模型相似的,但卻是由開發人員自定義的安全模型,稱為基于角色的安全性(Role-Based Security)?;诮巧陌踩宰钪匾母拍罹褪鞘跈?Principals)和標識(Identity)。
基于角色的安全性
簡單的說,程序安全性的目的就是防止不懷好意的人或者程序不能做管理員和開發人員不允許做的事情。在前面提到的傳統的安全機制著眼于控制用戶的權限,通過驗證用戶的身份標識來限制用戶的操作,從而可以控制特定的用戶對資源的訪問,在過去很長的一段時間里,Windows和UNIX這兩個最成功的操作系統都采取了這種安全機制。在討論.NET的安全編程之前,我們將先來看看.NET平臺提供的安全模型,只有深入理解安全模型,我們才能更加有效的利用平臺給我們提供的更好的安全性保證(以下討論的操作系統以Windows 2000及Windows XP為主)。
.NET的安全模型在系統的安全模型的上層,并且與一些服務器程序的安全特性結合的很好(當然,目前這些產品還僅限于微軟自己的產品,比如SQL Server和Internet Information Services (IIS))。正因為.NET與操作系統的層次不同,所以.NET程序的安全性就取決于這樣幾個因素:.NET安全性是如何配置的,程序組件是怎樣編寫的,以及一些由Windows,網絡設置或者其他程序設定的安全特性。
下面這幅圖說明了.NET安全模型是如何在Windows的安全子系統上工作的。管理員使用管理控制臺snap-ins設置用戶帳號并制定安全策略。同時,管理員也負責管理.NET安全配置。當用戶登陸操作系統并運行.NET托管程序,CLR將驗證用戶并允許程序進行某些動作,接著將這些操作傳遞給操作系統的安全監視程序。
原文轉自:http://www.anti-gravitydesign.com