代码访问安全性

更新:2007 年 11 月

当今高度连接的计算机系统经常会遇到出自各种来源(可能包括未知来源)的代码。代码可能由电子邮件附带、包含在文档中或通过 Internet 下载。遗憾的是,许多计算机用户都亲身体验过恶意移动代码(包括病毒和蠕虫)造成的后果,这些代码可能会损坏或毁坏数据,并会浪费时间和资金。

多数普通安全机制根据用户的登录凭据(通常为密码)赋予用户权限,并限制允许用户访问的资源(通常为目录和文件)。但是,这种方法无法解决以下几个问题:用户从许多来源获取代码,这些来源中有一些可能不可靠;代码可能包含 bug 或具有脆弱性,使它有可能被恶意代码利用;代码有时候会执行一些操作,而用户并不知道它会执行这些操作。结果,当谨慎且可信的用户运行恶意软件或包含错误的软件时,计算机系统可能会损坏,私有数据可能会泄漏。多数操作系统安全机制要求每一段代码都必须完全受信任(Web 页的脚本可能除外),然后才可运行。因此,仍需要一种可广泛应用的安全机制,即使两个计算机系统之间没有信任关系,该机制也允许在一个计算机系统上生成的代码能够在另一系统上安全地执行。

为了帮助保护计算机系统免受恶意移动代码的危害,让来源不明的代码安全运行,防止受信任的代码有意或无意地危害安全,.NET Framework 提供了一种称为“代码访问安全性”的安全机制。代码访问安全性使代码可以根据它所来自的位置以及代码标识的其他方面,获得不同等级的受信度。代码访问安全性还实施不同级别的对代码的信任,从而最大限度地减少了必须完全信任才能运行的代码的数量。使用代码访问安全性,可以减小恶意代码或包含错误的代码滥用您的代码的可能性。它可以减轻您的责任,因为您可以指定应该允许代码执行的一组操作,同时还可指定永远不允许代码执行的一组操作。代码访问安全性还有助于最大限度地减少由于代码中的安全脆弱性而造成的损害。

所有以公共语言运行库为目标的托管代码都会受益于代码访问安全性;即使托管代码不进行一次代码访问安全性调用,它也会受益。但是,正如代码访问安全性基础知识中所概述的那样,所有应用程序都应该进行代码访问请求。

本节内容

相关章节