今天高度连接的计算机系统经常暴露在源自于各种各样的, 不可预知来源的代码之下. 代码可以被附着在电子邮件中, 包含在文档中, 或者在因特网中被下载. 不幸的是, 很多计算机的使用者都经历过第一手的恶意的动态代码, 包括病毒, 蠕虫, 这些可以破坏数据, 耗费时间和金钱.
大多数安全机制会基于用户登录的凭证(通常是密码)来赋予相应的权限来访问受限制的资源(通常是目录和文件). 然而, 这种方式在处理一些情况的时候不灵光: 用户从多种途径获得代码源, 有些远是靠不住的; 代码可以包含bug或者弱点, 从而使得它可以被恶意代码攻击; 代码有时会做一些使用者不知道代码会做的事情. 所以呢, 计算机系统在可信任的用户运行恶意软件或错误软件的时候可以被破坏, 私人数据可以泄露. 多数的操作系统的安全机制要求每一段代码必须被完全信任才能运行, 除非有可能是网页中的脚本. 所以, 需要有一种广泛适用的安全机制, 允许一个计算机系统中的代码可以在另一个受保护的系统上执行, 即使在系统之间并不存在信任关系.
为了帮助保护计算机系统不受恶意的可移动代码的侵害, 为了允许从不明来源的代码可以在受保护的系统上运行, 同时也帮助受信任的代码被故意及非故意的安全折中所阻碍, .NET Framework提供了一个叫做code access security的安全机制. Code access security还加强了对代码信任的等级的区分, 这种区分减小了为完全信任地运行代码而要写的代码量. 使用code access security能够减小你代码被误用, 或被恶意代码使用, 或是被包含错误的代码的使用的可能性. 它可以减轻你的责任因为你可以指定你的代码被允许进行的操作和你的代码不被允许进行的操作. code access security能够帮助最小化你代码中的安全弱点可能造成的破坏的后果.
所有的目标是common language runtime的托管代码都会从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