使托管代码与.NET代码访问安全性配合

ZDNet软件频道 时间:2003-05-14 作者:周靖 译 |  我要评论()
本文关键词:
.NET最大的好处之一是,可在多个工作站上方便地下载和执行代码,但同时也带来了诸多安全问题。不过,.NET框架通过“代码访问安全性”(CAS)为此提供了一个出色的解决方案。本文重点在于托管代码如何与CAS进行交互,以及管理员应如何配置CAS。
本文译自Builder.com,未经许可请勿转载 .NET最大的好处之一是,可在多个工作站上方便地下载和执行代码,从而实现智能客户端应用程序的创建。这虽然为我们带来了方便,但同时也带来了诸多安全问题。不过,.NET框架通过“代码访问安全性”(CAS)为此提供了一个出色的解决方案。CAS使.NET框架超越了简单的、基于身份资料的安全性,允许管理员根据一些总称为“证据”(Evidence)的代码属性来配置不同的信任级别。这些属性具体包括数字签名、应用程序目录、程序集的哈希值、URL的始发站点、区域(Internet、本地Intranet、受信任的站点等等)以及程序集的强名称。证据的广度使CAS能达到非常高的控制精度。要想获得对CAS常规构成的详细解释,请参考我的前一篇文章。本文重点在于托管代码如何与CAS进行交互,以及管理员应如何配置CAS。

在代码中使用CAS

当公共语言运行库(CLR)确定了你的代码要拥有的权限后,它会查询4个策略级别来计算一个允许的权限集。这4个策略级别是企业、计算机、用户以及由宿主应用程序配置的可选应用程序域。在每个级别,新权限都会与现有权限相交。结果是,只有全部策略级别都允许的权限才会被授予。

开发者也可在其代码中加入声明性和强制性安全要求,通知CLR它需要特定的权限。虽然不一定非要专门请求权限,但如果不这样做,你的代码就必须能处理因权限不足而造成的异常。除此之外,请求特定的权限可确保你的代码只用于它所设计的目的,不会被别人恶意地利用。最后,如果请求的只是代码运行所需的最小权限,就能提高代码被允许运行的机会。


不要忘了
注意.NET框架类本身是安全的,从你的代码中调用时会发出权限请求。例如,即使你不显式地请求权限,在调用System.IO中的类来写入文件系统时,FileStream类也会自动请求合适的权限。因此,在你的代码中不必请求和你调用的.NET框架类相同的权限,否则会影响性能。参见.NET框架文档,了解每个方法所请求的权限。



如果你的代码不需要访问受保护的资源(文件系统、注册表等等),就不必关心请求权限的问题。请求权限还会增大代码的复杂程度,所以最好在代码通过一个Intranet或Internet部署,而且执行的函数或访问的资源需要进行限制时,才考虑请求权限。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134