BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

.NET 4 Beta 2不再采用代码访问安全(CAS)模型

| 作者 Abel Avram 关注 10 他的粉丝 ,译者 王波 关注 0 他的粉丝 发布于 2010年2月1日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

从.NET Framework 1.0开始,微软就引入代码访问安全(CAS)模型,这是一项用于分配和管理托管代码的工具。.NET Framework 4.0 Beta 2并不赞成使用CAS,故默认情况下已经关闭该功能,而引入了第二级安全透明度的(Security Transparency Level 2)安全模型。

考虑到一项强大的功能可以帮助.NET比Java取得更大的进展,在.NET开发人员中CAS就变得不太流行,这是由于它自身的复杂性以及使用不当时会导致潜在的安全漏洞所致。除此以外,本地应用程序或者非托管代码可在完全信任的情况下继续运行,这让CAS更无用武之地。

.NET Framework 4.0中关闭CAS,表明所有通过Windows Explorer或者命令行运行的程序都处于完全可信状态。在IE浏览器或ASP.NET内部运行的.NET应用程序也会由它们的主机授于某种级别的信任度。

基于这项改变,当前开发中的代码也许会弹出警告或运行时异常:

这些安全策略改变的结果是:如果我们通过其他类型及成员显式或隐式调用过时的CAS安全策略类型和成员,我们也许会遇到编译警告和运行时异常。对于过时的类型和成员以及其替代者,请查看:代码访问安全策略的兼容性与移植
我们可以在运行时设置框架使用<NetFx40_LegacySecurityPolicy>配置要素来加入早期的CAS策略操作,以绕开警告或错误提示。然而,指定使用旧版安全策略并不包括该版本的任何自定义CAS策略,除非它移植到.NET Framework 4 Beta 2。

.NET 4.0 Beta 2扩展了早期的Security Transparency功能,该项功能首次在.NET 2.0中引入并在微软内部使用。托管代码在一个沙盒中运行就认为是透明的,因为它仅执行主机授权的操作,所以认为它是安全的。第二级透明度安全模型引入以下新元素:

在.NET Framework 4 Beta 2,透明度是一项强制措施,用于把应用程序代码和底层代码分开。透明度区分了可调用本地代码的关键代码和和不可调用本地代码的透明代码。透明代码可在许可范围内执行命令操作,但不能执行、调用、派生自关键代码或包含关键代码。

透明度强制措施的初始目标是要提供简单而高效的机制来隔离不同权限的代码组。在沙盒模型中,这些权限组不是完全信任(即不受约束)就是部分信任(即受制于沙盒的许可进行设定)。

桌面应用程序是完全可信的。因此,它们不受透明度模型的影响。

在.NET 4.0中有三种代码类型:透明代码、可靠和关键的安全代码和关键安全代码:

  • 透明代码——包括完全可信的运行代码,仅可调用其他的透明代码或可靠和关键的安全代码。它仅执行主域中部分可信的许可集(如果存在的话)允许的操作。 除此以外,透明方法不可以重写关键虚方法或实现关键接口方法
  • 可靠和关键的代码完全可信,但由透明代码调用。它公开了完全可信代码的部分表层代码。修正和安全确认在可靠和关键的代码中执行
  • 关键安全代码是完全可信的并可调用任何代码,但它不能由透明代码所调用

开发人员仍可使用CAS,如果他们的应用程序适用于早期的.NET Framework版本的话,但是他们不能使用在4.0 Beta 2或以后版本的最新功能。微软鼓励他们用Windows软件限制策略(SRP)来代替,它有更简单的安全机制来处理托管代码和本地应用程序。

查看英文原文:Code Access Security Is No Longer Used in .NET 4 Beta 2

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT