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