代码组(3) 属性

代码组(3) 属性

代码组可以具有一些属性,这些属性可影响公共语言运行库确定程序集允许权限集方式。可应用到代码组属性有两种:ExclusiveLevelFinal

Exclusive属性,策略级别允许权限集是与具有此属性代码组关联权限集。在考虑所有策略级别时,运行库向代码授予权限绝对不会多于与Exclusive代码组关联权限。在给定策略级别内,代码只能是具有Exclusive属性一个代码组成员。在运行库计算独占代码组中程序集权限时,该属性会防止考虑同一策略级别中代码组。但仍会计算当前级别之下和之下策略级别。该属性允许一个特定代码组为当前策略级别针对向与该组匹配程序集授予什么权限问题做出唯一决定。这在需要向特定程序集授予特定权限集而不允许来自同一策略级别上代码组匹配项权限时很有用。

注意:如果一个程序集属于多个标记为独占代码组,则不允许执行该程序集。

LevelFinal属性,在检查代码组成员和授予权限时,不会考虑包含此代码组策略级别以下应用程序域级别之外任何策略级别。企业级策略是策略最高级别,接着是计算机策略、用户策略,然后是应用程序域策略。例如,如果LevelFinal属性应用到企业级策略中代码组,且某代码与此代码组成员条件匹配,那么,计算机级别策略和用户级别策略不会应用到该代码。应用 LevelFinal属性可以保证,与标有该属性代码组关联程序集绝对不会因为较低策略级别管理员做出决定而收到较少权限。

可以用.NET Framework配置工具或者是代码访问安全策略工具针对代码组开启或关闭Exclusive(或LevelFinal)属性。开启代码组Exclusive属性方法如下:

caspol -chggroup 1.2.1. -exclusive on

其中,使用chggroup命令更改标签为1.2.1代码组,把Exclusive属性设置为开状态。

---------------------注:本文部分内容改变自《.NET 安全揭秘》

posted @ 2012-06-23 17:51  玄魂  阅读(455)  评论(0编辑  收藏  举报