代码组(2) 成员条件

在创建代码组的过程中,简要熟悉了代码组的成员条件,在安全策略的实施过程中,可以认为,所有符合该代码组成员条件的程序集都属于该代码组。成员条件的实现形式是类型,每种成员条件对应一种类型。

所有代码

“所有代码”表示匹配所有代码的成员条件,该成员条件的实现类是AllMembershipCondition类。该成员条件通常用于策略级别的根代码组,以便将该策略应用于所有代码。AllMembershipCondition的类定义如代码清单4-6所示。

代码清单2-1  AllMembershipCondition类定义

[SerializableAttribute]

[ComVisibleAttribute(true)]

public sealed classAllMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable

AllMembershipCondition类继承了三个接口:

IMembershipCondition接口:定义测试以确定代码程序集是否是代码组的成员。该接口的Check方法用来确定指定的证据是否能满足成员条件。

ISecurityEncodable接口:定义使权限对象状态与 XML 元素表示形式进行相互转换的方法。任何自定义权限都必须实现此接口。该接口的FromXml方法用 XML 编码重新构造具有指定状态的安全对象,ToXml方法创建安全对象及其当前状态的 XML 编码。

ISecurityPolicyEncodable接口:支持使权限对象状态与 XML 元素表示形式进行相互转换的方法。该接口与 ISecurityEncodable接口相似,不同的是它包含策略级上下文,解析对命名权限集的引用时需要策略级上下文信息。ISecurityPolicyEncodable接口也提供了FromXml和ToXml方法,功能与ISecurityEncodable接口相同。

应用程序目录

“应用程序目录”成员条件通过测试程序集的应用程序目录确定该程序集是否属于代码组。该成员条件的实现类是ApplicationDirectoryMembershipCondition 类,该类定义如代码清单2-2所示。

代码清单2-2  ApplicationDirectoryMembershipCondition 类定义

[SerializableAttribute]

[ComVisibleAttribute(true)]

public sealed class ApplicationDirectoryMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable

ApplicationDirectoryMembershipCondition可确定 ApplicationDirectory 属性是否包含程序集 URL 证据路径。例如,如果 ApplicationDirectory 是 C:\app1,则具有 URL 证据的程序集(例如 C:\app1、C:\app1\main.aspx、C:\app1\folder1 或 C:\app1\folder1\main1.aspx)符合该成员条件。不在 C:\app1 目录中或其子目录之一中的代码未能通过成员条件测试。没有 ApplicationDirectory 或 URL 证据的代码总是不能通过成员条件测试。

哈希

“哈希”成员条件通过测试程序集的哈希值确定该程序集是否属于代码组。该成员条件的实现类是HashMembershipCondition类,该类的定义如代码清单4-8所示。

代码清单2-3  HashMembershipCondition类定义

[SerializableAttribute]

[ComVisibleAttribute(true)]

public sealed classHashMembershipCondition : ISerializable, IDeserializationCallback, IMembershipCondition,

   ISecurityEncodable, ISecurityPolicyEncodable

HashMembershipCondition类比AllMembershipCondition类多实现了两个接口:

ISerializable接口:允许对象控制其自己的序列化和反序列化过程。

IDeserializationCallback接口:指示在完成整个对象的反序列化时的通知类。

发行者

“发行者”成员条件通过测试程序集的软件发行者 Authenticode X.509v3 证书确定程序集是否属于代码组。该成员条件的实现类是PublisherMembershipCondition类,该类的定义如代码清单2-3所示。

代码清单2-3 PublisherMembershipCondition类定义

[SerializableAttribute]

[ComVisibleAttribute(true)]

public sealed class PublisherMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable

PublisherMembershipCondition类有一个名为Certificate的公共属性,用类获取或设置要针对其测试成员条件的 Authenticode X.509v3 证书。

站点

“站点”成员条件通过测试从其中产生程序集的站点以确定该程序集是否属于代码组,其中代码可出自 HTTP 站点、HTTPS 站点和 FTP 站点。该成员条件的实现类为SiteMembershipCondition类,该类的定义如代码清单2-4所示。

代码清单2-4  SiteMembershipCondition类定义

[SerializableAttribute]

[ComVisibleAttribute(true)]

public sealed class SiteMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable

如果该代码源于由 Site 指定的网站,则代码程序集满足站点成员条件。站点是位于 URL 协议标识符后面的“//”和后面的“/”(如果存在)之间的字符串。例如,www.xuanhun.com 是 URL http://www.xuanhun.com/process/grind.htm 的站点标识,这不包括端口号。如果给定的 URL 是 http://www.xuanhun.com:8000/,则站点为 www.xuanhun.com,而非 www.fourthcoffee.com:8000。

站点可以完全匹配,也可以通过在点分隔符位置使用通配符(“*”)前缀进行匹配。例如,站点名称 *.xuanhun.com 与 xuanhun.com 和 www.xuanhun.com 匹配。如果没有通配符,则站点名称必须是精确匹配。站点名称 * 将与所有站点匹配,但不会与无站点证据的代码匹配。

时间: 2024-08-31 00:31:45

代码组(2) 成员条件的相关文章

代码组(3) 属性

代码组可以具有一些属性,这些属性可影响公共语言运行库确定程序集允许的权限集的方式.可应用到代码组的属性有两种:Exclusive和LevelFinal. Exclusive属性,策略级别允许的权限集是与具有此属性的代码组关联的权限集.在考虑所有策略级别时,运行库向代码授予的权限绝对不会多于与Exclusive代码组关联的权限.在给定的策略级别内,代码只能是具有Exclusive属性的一个代码组的成员.在运行库计算独占代码组中的程序集的权限时,该属性会防止考虑同一策略级别中的其他代码组.但仍会计算

.NET 框架类库(下)

System.Runtime.Remoting.Contexts 包含定义所有对象所驻留的上下文的对象.上下文是一个有序的属性序列,用于定义其中的对象所处的环境.上下文是在对象的激活过程中创建的,这些对象被配置为要求某些自动服务,如同步.事务.实时 (JIT) 激活.安全性等.多个对象可以存留在一个上下文内. System.Runtime.Remoting.Lifetime 包含管理远程对象生存期的类.传统上,分布式垃圾回收功能使用引用计数和 Ping 来控制对象的生存期.这种机制在每一项服务只

.Net框架与框架类库-转

http://blog.csdn.net/rrrfff/article/details/6686493 .NET Framework 具有两个主要组件:公共语言运行库和 .NET Framework类库.公共语言运行库是 .NET Framework 的基础.您可以将运行库看作一个在执行时管理代码的代理,它提供内存管理.线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性.事实上,代码管理的概念是运行库的基本原则.以运行库为目标的代码称为托管代

WMLScript脚本程序设计

程序|脚本|设计 作为一种编辑语言,WMLScript提供了强大的函数.语句和库功能,以及外部编辑.访问控制等支持,同时对程序运行中可能产生的错误给出了检测手段和具体的解决办法.这些内容属于WMLScript的脚本程序设计知识和进一步的编程规定,我们本章就对此进行详细介绍. 5.1 语句 前面我们学习了变量.操作符和表达式,但仅由这些内容并不能完成某个完整的功能,因为他们不能形成完整的操作或处理程序.变量就如同与严重的单词,表达式如语言中的词组,他们都不能表达一个完整的意思;只有语句,是语言中完

扩展Forms验证

1.使用Forms验证存储用户自定义信息 Forms验证在内部的机制为把用户数据加密后保存在一个基于cookie的票据FormsAuthenticationTicket中,因为是经过特殊加密的,所以应该来说是比较安全的.而.net除了用这个票据存放自己的信息外,还留了一个地给用户自由支配,这就是现在要说的UserData. UserData可以用来存储string类型的信息,并且也享受Forms验证提供的加密保护,当我们需要这些信息时,也可以通过简单的get方法得到,兼顾了安全性和易用性,用来保

forms验证的方式和使用

如何运用 Form 表单认证 ASP.NET 的安全认证,共有"Windows""Form""Passport""None"四种验证模式."Windows"与"None"没有起到保护的作用,不推荐使用:"Passport"我又没用过,唉--所以我只好讲讲"Form"认证了.我打算分三部分: 第一部分 -- 怎样实现From 认证: 第二部分 --

完美的团队必需哪几种人

凡是经过考验的朋友,就应该把他们紧紧地团结在你的周围. --莎士比亚 "团队"与"群体"有什么不同?团队的条件是什么? 成为一个团队的成员条件: 自主性:我在日常工作中,有没有主动回报(反馈),主动沟通,主动关切的习惯? 思考性:我自己会不会经常发掘问题点(原因.症结)?会不会对这个问题点寻求对策?会不会对自己的工作定期提出流程改善建议? 协作性:我能不能接受一个冲突?能不能排除自己的自私.自我和自大?能不能在有原则和肯协作的取向下与人沟通? 世界上没有两个人是完全

使用 IIS 进行 ASP.NET 2.0 成员/角色管理(2):实现

asp.net|iis 摘要:本文介绍如何通过创建三层结构式 ASP.NET 2.0 应用程序来维护 IIS 生产服务器中的成员身份数据库和角色数据库. 简介 成员身份编辑器 Microsoft Visual Studio 2005 版本中没有用于维护 Microsoft IIS 中的成员身份数据库和角色数据库的"现成"解决方案.将开发环境中的应用程序移至 IIS 生产服务器时这就会是个问题.Microsoft 提供的实用程序 ASP.NET Web Configuration 只能在

做站先学会做人 SEOer必备的几大条件

最近公司在招聘网站推广专员,所以就浏览了很多这方面的招聘信息,看完之后发现一些东西.如今各大公司对于seo专员方面的要求越来越高了.我们先来看几张招聘截图.   看看这些招聘信息职责要求加起来都是个十几条.这种现象也从侧面说明seo这个行业越来越受到的重视.这是一件好事情,就好比网站的权重,行业的权重高了,待遇自然就好了.但同时也说明,对seo人的要求也越来越高了,如果不跟进发展的脚步提升自己的条件和素质,很有可能会被淘汰掉.所以今天我就说说我对做seo这一行的老少爷们儿大哥大姐小弟小妹们应该具