证据
重要事项 |
---|
在 .NET Framework 4 版中,公共语言运行时 (CLR) 不再为计算机提供安全策略。Microsoft 建议使用 Windows 软件限制策略替代 CLR 安全策略。此主题中的信息适用于 .NET Framework 3.5 和更低版本,不适用于 4 和更高版本。有关此更改和其他更改的更多信息,请参见 .NET Framework 4 中的安全性更改。 |
证据是公共语言运行时用以根据安全策略作出决定的信息。 证据向运行时指示代码具有特定的特征。 证据的常见形式包括数字签名和代码出自的位置,但也可以自定义设计证据来表示其他对应用程序有意义的信息。 程序集和应用程序域都接收基于证据的权限授予。
下表显示宿主可以提供给运行时的证据的常见类型。
证据 |
说明 |
---|---|
应用程序目录 |
应用程序的安装目录。 |
哈希 |
加密哈希(如 SHA1)。 |
发行者 |
软件发行者签名,即代码的 Authenticode 签名人。 |
站点 |
原始站点(如 https://www.microsoft.com/china)。 |
强名称 |
程序集的加密型强名称。 |
URL |
原始 URL。 |
区域 |
原始区域(如 Internet 区域)。 |
除了表中列出的几种形式的证据外,应用程序定义的证据或系统定义的证据也可以提供给运行时。 受信任的应用程序域宿主可以将有关程序集或应用程序域的证据提供给运行时。 运行时使用此信息来计算企业级策略、计算机策略和用户策略(如果由受信任的应用程序域宿主设置,则也计算程序集的应用程序域策略),然后返回要授予程序集或应用程序域的权限集。 如果受信任的应用程序域宿主没有提供证据的权限,则程序集或应用程序域会收到已授予宿主的权限。
运行时从受信任的应用程序域宿主或直接从加载程序接收有关程序集的证据。 某些证据(如代码出自何处)通常来自受信任的应用程序域宿主,因为只有该宿主知道此信息。 受信任的应用程序域宿主可以重写由加载程序提供的证据,并可提供它们自己的证据。
其他证据(如程序集的数字签名)可以是代码自身中固有的,也可以来自加载程序或受信任的应用程序域宿主。 通常,在加载代码时,运行时会验证每个程序集的数字签名。 如果数字签名有效,则受信任的应用程序域宿主将签名信息作为证据传递给运行时的策略机制。 另外,程序集或受信任的应用程序域宿主还可以提供自定义证据作为程序集组成部分的资源。 管理员和开发人员可以定义自定义证据,并可通过扩展安全策略来识别和使用该证据。
运行时的策略机制使用来自受信任的应用程序域宿主和程序集的证据来确定一段代码在代码组中的成员资格。