7. 代码访问安全性
cas 是 .net 安全性模型的一部分,它确定一段代码是否允许被运行,以及当它运行是可以使用什么资源.例如,cas 可以防止一个 .net 的 web applet 将你的硬盘格式化. 【程序编程相关:ProgrammingfortheNew】7.1 什么是代码访问安全性 (cas)? 【推荐阅读:CreationalPattern-Bu】7.2 cas 如何起作用? 【扩展信息:用ASP.Net编写留言本】 cas 安全策略设计两个关键概念—代码组与权限.每个 .net 元件是特定 代码组的成员,并且每个代码组被授予由有名权限集所指定的权限. 例如,使用默认的安全策略时,一个从 web 站点下载的控件属于“zone - internet”代码组,它保持由有名权限集“internet”所定义的权限.(自然,有名权限集“internet”表示一组受到严格限制的权限.) 7.3 谁定义 cas 代码组?microsoft 定义了一些默认代码组,但你可以改变这些甚至创建你自己的代码组.要想看到你的系统中定义的代码组,可以从命令横行运行“caspol -lg”命令.再我的系统里它看起来像这些: level = machinecode groups:
1. all code: nothing
1.1. zone - mycomputer: fulltrust 1.1.1. honor skipverification requests: skipverification 1.2. zone - intranet: localintranet 1.3. zone - internet: internet 1.4. zone - untrusted: nothing 1.5. zone - trusted: internet 1.6. strongname - 0024000004800000940000000602000000240000525341310004000003000000cfcb3291aa715fe99d40d49040336f9056d7886fed46775bc7bb5430ba4444fef8348ebd06f962f39776ae4dc3b7b04a7fe6f49f25f740423ebf2c0b89698d8d08ac48d69ced0fc8f83b465e0807ac11ec1dcc7d054e807a43336dde408a5393a48556123272ceeee72f1660b71927d38561aabf5cac1df1734633c602f8f2d5: everything注意代码组的层次—顶层 (all code) 是最通用的,它随后分为几个组,每个还可以再分.同时注意,与一般的想象不同,子组可以被赋予比它的上级更宽的权限集. 7.4 如何定义自己的代码组?使用 caspol.例如,假定你信任来自 www.mydomain.com 的代码,并且希望它对你的系统拥有完全的访问权,但是希望对其它 internet 站点保持默认的限制.要实现这些,你可以在“zone - internet”组中增加一个子组,就像下面那样: caspol -ag 1.3 -site www.mydomain.com fulltrust现在如果你运行 caspol -lg 就可以看到新的代码组被增加为 1.3.1 组: ... 1.3. zone - internet: internet 1.3.1. site - www.mydomain.com: fulltrust...注意数字标号 (1.3.1) 只是 caspol 编出来以便能从命令行方便地操纵代码组的.底层的运行库永远看不到它. 7.5 如何改变代码组的权限集?使用 caspol.如果你是机器的管理员,你能在 machine 层次上操作—这不仅意味着你所做的改变将成为机器的默认设置,而且用户不能把权限改得更宽.如果你是一个普通用户 (不是管理员) 你仍然可以修改权限,但只能使它们变得更严格.例如,为使 intranet 代码能做它们想做的事,你可能需要这样: caspol -cg 1.2 fulltrust注意,因为 (在标准的系统里) 这比默认的安全策略权限更大,你应该在 machine 层次上做这些—在 user 层次上这样做不起作用. 7.6 能否创建自己的权限集?是的.使用 caspol -ap,指定一个包含权限集中所有的权限的 xml 文件.这里 是一个指定 everything 权限集的示例文件—修改它以适应你的需要,这样可以节省一些时间.... 下一页