用代码访问安全机制来保护资源

ZDNet软件频道 时间:2003-11-14 作者:ZDNet China |  我要评论()
本文关键词:anquan
如今的开发环境已经倾向于基于组件的方式。这使得系统资源不受恶意代码的攻击变得非常重要。Microsoft为此将通过一个叫做代码访问安全的特性来解决这个问题。

本文译自Builder.com,未经许可请勿转载

人们过去常常会忽视(好的)应用程序设计能够保护系统资源不受恶意代码的攻击。这在当今倾向于使用基于组件的方式的开发环境里尤其重要。

微软已经张开双臂拥抱了利用.NET框架组件的开发或者模块化开发。这些组件能够轻易地同其他开发人员共享,因此会加速开发的时间。要提醒注意的一点是:在你的应用程序里慎用来源不明的代码。但是你要如何确保里面没有包含恶意代码呢?

代码访问安全机制

微软通过将一个叫做代码访问安全(code access security,CAS)的特性来解决这个问题。CAS提供了一种根据代码的来源和功能赋予对代码的访问权的灵活方法。代码安全机制能够被应用在不同的层次。这个特性只能和可管理代码(managed code)一起使用,后者是针对.NET通用语言运行库(CLR)的。

CLR会在被执行的时候自动地评估应用程序。在缺省的情况下,它会根据计算机本地的安全设置来评估应用程序。因此一系列许可(permission)被分派给应用程序。这个应用程序会根据许可(顺利)运行或者产生一个安全异常。在运行代码的时候,你永远都不能肯定计算机的安全设置。

必要的安全基础知识

微软确认了使用CAS时四个必须了解的方面:

  • CAS需要一个生成类型安全代码的编译器。这是包括在.NET框架里的编译器的一个特性。
  • 两种句法之一——命令性的声明性的——应该在同.NET框架的安全系统交互操作的时候被使用。声明性的安全句法会用属性将安全信息放进你代码的元数据里。属性可以被放在组件(assembly)、类或者成员层里。命令性的安全句法会通过创建允许对象的新实例来发布一个安全调用。
  • 对许可的请求被应用在组件层。代码基本上就是告诉运行库它需要什么许可,或者哪些许可不是所需要的。
  • 类库使用CAS来指明访问所需要的许可。

上面几条可能是很好理解的,但是命令性和声明性句法之间的区别常常被弄混淆。


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