c2005net3.0高级编程(第5版)第19章.NET的安全性.docVIP

c2005net3.0高级编程(第5版)第19章.NET的安全性.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c2005net3.0高级编程(第5版)第19章.NET的安全性

第Ⅲ部分 基 类 库 第19章 .NET的安全性 PAGE 586 PAGE 585 190 190 第 章 第 章 .NET的安全性 当用户坐在计算机前,单击应用程序上的按钮时,应用程序会在后台作出响应,如果用户试图使用一个没有相关模块的特性,应用程序就会与Internet连接,把模块下载到全局程序集缓存中,并开始执行模块,所有的一切都没有给出提示。 这种后台升级功能已经在许多.NET应用程序中使用了,但是,我们必须关注与所谓的“移动代码(mobile code)”相关的安全问题。也就是说,有什么证据能说明计算机下载的代码是可以信任的?怎样知道所下载的模块就是我们需要的模块?CLR在后台做了什么工作,以确保Web 站点上的控件没有读取私人的电子邮件? .NET执行程序集的安全性策略。.NET根据它拥有的程序集信息(例如程序集来自哪里,它们是由谁发布的),把具有相似特征的程序集组合在一起。例如,运行库把本地内联网上的所有代码放在一组。然后,使用安全性策略(通常由系统管理员使用代码访问安全策略工具caspol.exe命令行实用程序或Microsoft管理控制台来定义)在非常小的粒度级别上决定应该赋予代码什么权限。需要做什么工作才能确保机器或某个应用程序的安全?什么也不需要,因为所有的代码都自动运行在CLR的安全环境中,但可以在必要时禁用安全性。 除了相信正在执行的代码是可信赖的之外,还要允许应用程序的用户访问他们需要的特性(但不要太多),这一点也是非常重要的。依靠基于角色的安全性,.NET可以对用户和角色进行有效的管理。 本章将讨论.NET中有助于管理安全的一些特性,其中包括.NET怎样避开有害的代码、怎样管理安全性策略,以及怎样编程访问安全子系统等。除此之外,还将讨论怎样安全地部署.NET应用程序,并且给出一些小的应用程序示例,以巩固本章介绍的概念。 19.1 代码访问的安全性 代码访问的安全性是.NET的一个特性,它根据代码的信任级别来管理代码。如果CLR非常信赖代码,允许它们运行,就会开始执行代码。但是,根据提供给程序集的权限,代码也许要在有限制的环境中运行。如果代码没有得到足够的信赖去运行,或者虽然代码运行了,但试图执行没有相关权限的操作,则会产生一个安全异常(其类型是SecurityException或它的子类)。代码访问的安全性系统意味着可以停止有害代码的运行,也可以允许代码运行在受保护的环境中,在受保护的环境中,我们相信代码不会进行破坏。 例如,如果用户试图运行一个应用程序,执行从Internet上下载的代码,则默认的安全性策略将生成一个异常,该应用程序会启动失败。同样,如果用户从网络驱动器上运行应用程序,则那个应用程序可以运行,但是如果那个应用程序试图访问本地驱动器上的文件,运行库就会产生一个异常,根据应用程序中处理错误的程序,应用程序会退出对文件的访问,或者退出执行。 对于大多数应用程序而言,.NET代码访问的安全性都是非常有用的,但它在后台起作用。代码访问的安全性提供了高水平的保护,以远离有害的代码,但是,通常我们涉及不到这个方面。而只考虑安全性策略的管理,尤其是在把桌面应用程序配置为信赖提供应用程序的软件厂商的代码时,就更要考虑安全性策略的管理。 在开发应用程序时,对于其中包含的元素,如果要严密地控制它们的安全性,则可以使用代码访问的安全性。例如,如果公司的数据库中包含极其机密的数据,则可以使用代码访问的安全性,规定什么代码允许访问数据库,而什么代码不允许访问数据库。 代码访问的安全性的主要目的是保护资源(例如本地磁盘、网络和用户接口等)免受有害代码的破坏,而不是使软件免受用户的破坏。对于与用户相关的安全问题,通常可以使用Windows内置的用户安全子系统,或者利用.NET中基于角色的安全性,这些内容将在本章的后面讨论。 代码访问的安全性以两个高层次的概念为基础,即代码组(Code Group)和权限(Permission)。下面讨论这两个概念,因为它们构成了后面章节的基础: 代码组:代码组用于把具有相似特征的代码集合到一组。通常,集合时所依据的最重要特征就是代码来自哪里。例如,代码组包括“Internet”(代码来自Internet)和“Intranet”(代码来自LAN)。把程序集放到代码组中所使用的信息称为“证据”。CLR收集的其他证据包括代码的发布者、代码的强名以及下载代码的URI等。代码组的排列是层次状的,程序集总是与几个代码组相匹配。层次根部的代码组称为“All Code”,包含其他所有的代码组。层次用于确定程序集属于哪一个代码组,如果程序集提供的证据与树中的代码组不匹配,则程序集不属于树的任何一个代码组。 权限:权限是允许每一个代码组执行的

文档评论(0)

juhui05 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档