c#2005net30高级编程(第5版)第19章NET的安全性

c#2005net30高级编程(第5版)第19章NET的安全性

ID:47162169

大小:1.68 MB

页数:46页

时间:2019-08-14

c#2005net30高级编程(第5版)第19章NET的安全性_第1页
c#2005net30高级编程(第5版)第19章NET的安全性_第2页
c#2005net30高级编程(第5版)第19章NET的安全性_第3页
c#2005net30高级编程(第5版)第19章NET的安全性_第4页
c#2005net30高级编程(第5版)第19章NET的安全性_第5页
资源描述:

《c#2005net30高级编程(第5版)第19章NET的安全性》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第19章.NET的安全性190第章.NET的安全性当用户坐在计算机前,单击应用程序上的按钮时,应用程序会在后台作出响应,如果用户试图使用一个没有相关模块的特性,应用程序就会与Internet连接,把模块下载到全局程序集缓存中,并开始执行模块,所有的一切都没有给出提示。这种后台升级功能已经在许多.NET应用程序中使用了,但是,我们必须关注与所谓的“移动代码(mobilecode)”相关的安全问题。也就是说,有什么证据能说明计算机下载的代码是可以信任的?怎样知道所下载的模块就是我们需要的模块?CLR在后台做了什么工作,以确保Web站点上的控件没有读取私人的电子邮件?.NET执行

2、程序集的安全性策略。.NET根据它拥有的程序集信息(例如程序集来自哪里,它们是由谁发布的),把具有相似特征的程序集组合在一起。例如,运行库把本地内联网上的所有代码放在一组。然后,使用安全性策略(通常由系统管理员使用代码访问安全策略工具caspol.exe命令行实用程序或Microsoft管理控制台来定义)在非常小的粒度级别上决定应该赋予代码什么权限。需要做什么工作才能确保机器或某个应用程序的安全?什么也不需要,因为所有的代码都自动运行在CLR的安全环境中,但可以在必要时禁用安全性。除了相信正在执行的代码是可信赖的之外,还要允许应用程序的用户访问他们需要的特性(但不要太多),

3、这一点也是非常重要的。依靠基于角色的安全性,.NET可以对用户和角色进行有效的管理。本章将讨论.NET中有助于管理安全的一些特性,其中包括.NET怎样避开有害的代码、怎样管理安全性策略,以及怎样编程访问安全子系统等。除此之外,还将讨论怎样安全地部署.NET应用程序,并且给出一些小的应用程序示例,以巩固本章介绍的概念。19.1代码访问的安全性585第19章.NET的安全性代码访问的安全性是.NET的一个特性,它根据代码的信任级别来管理代码。如果CLR非常信赖代码,允许它们运行,就会开始执行代码。但是,根据提供给程序集的权限,代码也许要在有限制的环境中运行。如果代码没有得到足够

4、的信赖去运行,或者虽然代码运行了,但试图执行没有相关权限的操作,则会产生一个安全异常(其类型是SecurityException或它的子类)。代码访问的安全性系统意味着可以停止有害代码的运行,也可以允许代码运行在受保护的环境中,在受保护的环境中,我们相信代码不会进行破坏。例如,如果用户试图运行一个应用程序,执行从Internet上下载的代码,则默认的安全性策略将生成一个异常,该应用程序会启动失败。同样,如果用户从网络驱动器上运行应用程序,则那个应用程序可以运行,但是如果那个应用程序试图访问本地驱动器上的文件,运行库就会产生一个异常,根据应用程序中处理错误的程序,应用程序会退

5、出对文件的访问,或者退出执行。对于大多数应用程序而言,.NET代码访问的安全性都是非常有用的,但它在后台起作用。代码访问的安全性提供了高水平的保护,以远离有害的代码,但是,通常我们涉及不到这个方面。而只考虑安全性策略的管理,尤其是在把桌面应用程序配置为信赖提供应用程序的软件厂商的代码时,就更要考虑安全性策略的管理。在开发应用程序时,对于其中包含的元素,如果要严密地控制它们的安全性,则可以使用代码访问的安全性。例如,如果公司的数据库中包含极其机密的数据,则可以使用代码访问的安全性,规定什么代码允许访问数据库,而什么代码不允许访问数据库。代码访问的安全性的主要目的是保护资源(例

6、如本地磁盘、网络和用户接口等)免受有害代码的破坏,而不是使软件免受用户的破坏。对于与用户相关的安全问题,通常可以使用Windows内置的用户安全子系统,或者利用.NET中基于角色的安全性,这些内容将在本章的后面讨论。代码访问的安全性以两个高层次的概念为基础,即代码组(CodeGroup)和权限(Permission)。下面讨论这两个概念,因为它们构成了后面章节的基础:●代码组:代码组用于把具有相似特征的代码集合到一组。通常,集合时所依据的最重要特征就是代码来自哪里。例如,代码组包括“Internet”(代码来自Internet)和“Intranet”(代码来自LAN)。把程

7、序集放到代码组中所使用的信息称为“证据”。CLR收集的其他证据包括代码的发布者、代码的强名以及下载代码的URI等。代码组的排列是层次状的,程序集总是与几个代码组相匹配。层次根部的代码组称为“AllCode”,包含其他所有的代码组。层次用于确定程序集属于哪一个代码组,如果程序集提供的证据与树中的代码组不匹配,则程序集不属于树的任何一个代码组。●权限:权限是允许每一个代码组执行的动作。例如,权限包括“可以访问用户界面”和“可以访问本地存储器”等。系统管理员通常在Enterprise级、Machine级和User级上管理

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。