网络上对framework最罗嗦的解释

上传人:野鹰 文档编号:2663823 上传时间:2017-07-26 格式:PDF 页数:6 大小:212.73KB
返回 下载 相关 举报
网络上对framework最罗嗦的解释_第1页
第1页 / 共6页
网络上对framework最罗嗦的解释_第2页
第2页 / 共6页
网络上对framework最罗嗦的解释_第3页
第3页 / 共6页
网络上对framework最罗嗦的解释_第4页
第4页 / 共6页
网络上对framework最罗嗦的解释_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《网络上对framework最罗嗦的解释》由会员分享,可在线阅读,更多相关《网络上对framework最罗嗦的解释(6页珍藏版)》请在金锄头文库上搜索。

1、网络上对framework最罗嗦的解释 疯狂代码 http:/CrazyC :http:/CrazyC Microsoft .NET Framework安全概述 本文概述了微软.NET Framework安全结构,包括基于证据的安全,基于角色的安全,认证和授权的概念,以及隔离存储,密码加密和扩展性。本文还概述了.NET Framework安全策略带给开发人员,管理员和最终用户的主要好处。本文假定读者已经基本熟悉了.NET Framework通用语言运行时和管理代码的概念。 引言 目前的安全问题 在今天的软件环境中,应用程序的来源很多,它们执行很多任务。对应用程序代码的信任是一个主要需求,因为我

2、们谁也不想软件或信息遭到破坏。给予许可的安全策略不会允许对敏感信息的不适当的访问,或将本地机器暴露给恶意的程序或甚至是有平常错误的代码。 过去,安全结构提供了基于用户帐号的隔离和访问控制-在这些限制内给予代码完全访问权,并假定由特定用户可运行的代码具有相同的信任度。不幸的是,如果所有程序都代表某用户运行,根据用户对代码的隔离对于保护一个程序不被其它用户使用是不够的。另一种情况,不能被完全信任的代码经常被转移到沙箱模型中执行,在此代码运行于隔离环境,而不会访问大部分的服务。 对今天应用程序的成功的安全解决方案必须能强化两个安全模型间的平衡。它必须提供对资源的访问,以便以完成有用的工作,它需要对应

3、用程序的安全性作细致的控制以确保代码被识别,检测,并给予合适的安全级别。.NET Framework就提供了一个这样的安全模型。 Microsoft .NET Framework安全解决方案 .NET Framework安全解决方案基于管理代码的概念,以及由通用语言运行时(CLR)加强的安全规则。大部分管理代码需要进行验证以确保类型安全及预先定义好的其它属性的行为的安全。例如,在验证的代码中,声明为接收4字节值的访问将拒绝提供8字节参数的调用,因为不是类型安全的。验证过程还确保了执行流只传送到已知的位置,如方法入口点-这个过程去除了跳转到任意位置执行的能力。 验证将阻止不是类型安全的代码执行,

4、在它们引起破坏前捕获很多常见的编程错误。通常的弱点-如缓存溢出,对任意内存或没有初始化的内存的读取,对控件的随意传送-都不再可能出现。这将使最终用户受益,因为在他们执行代码前对其进行检查。这也有益于开发人员,他们会发现很多常见错误(过去一直在困绕前开发)现在可以查明,并能阻止它们引起破坏。 CLR也能使非管理代码运行,但非管理代码不能从这些安全措施中受益。特殊的许可与对非管理代码的调用能力相关,一个强大的安全策略能确保这些许可被恰当地给予。经过很长时间后,非管理代码到管理代码的移植将减少对非管理代码的调用频率。 微软.NET Framework安全机制的构件 基于证据的安全 .NET Fram

5、ework引入了基于证据的安全的概念。在本质上,它是对安全策略暴露出来问题的解答: 组合从哪个站点获得? 组合是.NET Framework应用程序的构件。它们组成了部署,版本控制,重用,激活作用域,安全认证的基本单元。应用程序的组合是从网站上下载到客户端的。 组合是从哪个URL获得的? 安全策略需要明确的地址,而组合是从这个地址下载的。 组合是从哪个区获得的? 区是基于代码的位置,对安全标准,如 Internet, intranet和本机等等,的描述。 组合的强名(strong name)是什么? 强名是由组合的创建者提供了密码强化后的标识符。尽管它没有提供对创建者的任何证明,但它唯一标识了

6、组合,确保了组合没有被破坏过。 根据对这些问题的回答,及其它证据,安全策略可以对赋予组合垢合适许可进行计算。从多种来源可以得到证据,包括CLR,浏览器,微软ASP.NET,及外壳-这依赖于代码的来源。 策略驱动的信任模型使用代码证据 当组合被调入内存进,CLR策略系统通过收集组合的证据并在策略环境中对证据进行计算,从而决定赋予组合什么样的许可权。CLR策略系统然后根据评估过的证据和组合作出的许可请求给予组合一组许可。只有在组合被给予了一组最少的许可后,或组合根本不需要许可权,组合的创建者才能知道组合正确运行。通过一个或多个对特定许可的请求,这样的附加需求可以被传送室策略系统。 根据许可请求的类

7、型,策略系统可以进一步限制给予组合的许可(删除不必要的许可)或甚至拒绝将组合装入内存(如果运行组合所需的最小许可没有被策略给予)。在不存在任何许可请求的情况下,组合永远不会被给予多于策略系统将会给予的许可权限,请求只是进一步限制得到的许可。 安全策略包含了许多代码组,这些组包含了根据证据应给予的许可权。代码组描述的许可可提供给从特定的安全区域获得的组合,或提供给由特定发行商签名过的组合,等等。尽管随CLR发行了一组默认的代码组(及相关许可),但管理员可以对这些CLR安全的进行定置,以适合他们的特殊需求。记住,通过定义与证据相关的代码组,任何东西都可以作为证据提交,只要安全策略可以使用它。 创建

8、许可的的过程涉及到对证据的评估,以确定代码组适用于哪个等级:企业,机器,和用户。策略按上面顺序对这三个等级进行评估,然后创建交插了三个等级的许可设置。管理员可以将任何一个策略等级标记为终结(final),这样做应付阻止在其它等级上对策略做进一步评估。例如,管理员可以在机器级别上对组合终止策略,这样就会阻止用户级策略对该组合的应用。 一旦策略完成,许可的最初设置也就创建了。组合通过从三个方面做出特定的请求可以优化这些许可: 第一方面是指定为了使组合运行它必须拥有的最小许可设置。如果这些许可没有给予,那么组合将不同调入到内存,并抛出例外。 第二,可以指定一组可选的许可。尽管组合希望存在这些许可,但

9、如果无法获得这些许可,它仍可以调入到内存。 最后,行为特别好的组合实际上会拒绝它们所不需的有风险的许可。这三个优化选项是调入时作为声明语句实现的。 在运行时,许可是根据代码的执行计算的。右侧的图总结了这个过程的发生顺序。组合A3将它的证据和来自主机的证据提供给策略评估器。策略评估器在创建许可时也要考虑从组合得到的许可请求,G3。组合A3由组合A2调用,而A2又是由组合A1调用的。当组合A3执行一个引发安全检查的操作时,A2和A1获得的许可同样也要进行检查,以确保它们拥有A3所请求的许可权限。在这个过程中,此过程称为堆栈遍历(walking),堆栈中每个组合的许可权限都要进行检查以确定所给予的权

10、限设置是否包含安全检查所需要的许可。如果堆栈中的每个组合被给予了安全检查所需要的许可,调用将成功。如何任何组合没有给予所需要的许可,堆栈遍历过程失败,安全例外将被抛出。 图 1.主机和组合为策略评估器提供证据,评估器使用安全策略和许可请求确定组合的许可权限。应用程序中不同运行组件的许可权限然后用于作出授权决定。 代码访问安全堆栈遍历可以保护代码不受攻击。在精通的攻击中,恶意代码欺骗受信任代码执行它独自不能运行的操作-有效地利用代码的许可权限实现恶意的目的。对这类攻击,开发人员很难进行防备-但堆栈遍历确保了如果涉及到了低级信任等级的代码,有效许可将被减少到信任等级最低的代码具有的许可。 结果,代

11、码将从源处获得不同的信任等级,并在适合于特定的代码执行环境的限制下运行。 .NET Framework调用的自由安全性 一些活动,如读写文件,显示对话框,读写环境变量,可以通过包含在框架安全构架中的.NET Framework方法实现。这就使.NET Framework能根据安全策略允许或不允许一个操作,而不需要程序员做额外的工作。尽管暴露了保护资源的管理类的创建者在他们的库中做了明确的安全需求,使用.NET Framework类库访问受保护资源的开发人员可以自由地利用代码访问安全系统;他们不必作出明确的安全调用。 管理员可以通过决定给予哪些许可来优化安全策略,然后,依靠.NET Framew

12、ork处理所有的安全操作。代码访问安全能阻止大部分的恶意攻击,对代码的验证减少了缓存溢出和其它会导致安全攻击的不期望的行为。因此,应用程序和组件生来就受到了保护,它们免于大多数安全问题的冲击,而这些安全问题一直困绕着本地代码的实现。 基于角色的安全 有时根据已认证的身份或根据与代码执行上下文相关的角色作出认证决定是合适的。例如,金融和企业软件可以通过评估角色信息的企业逻辑加强策略。根据作出请求的用户角色可以对金融交易的数据进行限制。出纳被允许可以处理一定金额的请求,而多于该金额的所有工作需要监督人的角色来处理。 身份可以映射到登录系统的用户,或由应用程序定义。相应的原则封装了身份和其它相关的角

13、色信息(例如,但并不限于此,用户的组由操作系统定义)。 认证和授权 认证是一个过程,它接收来自用户的证书,并对证书的授权进行确认。如果证书是有效的,那么用户就可以说他拥有已认证的身份。而授权的过程是:确定认证用户是否能够访问给定的资源。认证可通过系统或企业逻辑来完成,通过某个API它是或获得的。认证API是完全可扩展的,因此开发人员根据需要使用自己的企业逻辑。开发人员可以对他们的认证需求进行编码,也可以修改底层的认证方法而无需对他们的代码作太大变化。除了微软Windows?操作系统身份认证外,还有的认证方法包括基本HTTP,摘要和 Kerberos,以及微软Passport和基于窗体的认证。这

14、些认证方法已经完全集成到ASP.NET中了。 在ASP.NET窗体认证中,用户提供证书,并提交窗体。如果应用程序簦别请求,系统发送一个cookie ,该cookie以某种形式包含包含了证书或包含重新获得身份的关键字。接下来发送的请求在头中包含了cookie,ASP.NET处理程序通过应用程序所期望的任何有效方法对这些请求认证和授权。如果请求没有经过认证,HTTP客户端将用于把请求发送到认证窗体,在那里用户可能提供信任证书。窗体认证有时用于个性化-为已知用户的内容进行定置。在一些情况下,身份是问题所在而不是认证,因此用户的个性化信息可以简单地通过访问用户或获得。 授权的目的是确定作出请求的身份是

15、否被给予了对给定资源的访问权。ASP.NET提供了两种类型的授权服务:文件授权和URL授权。文件授权根据正在作用的方法和作出请求的身份决定用户使用于哪个访问控制列表。URL授权是URI名称空间和不同用户或角色间的逻辑映射。 隔离存储 .NET Framework提供了一个特殊的功能,隔离存储,用于存储数据,甚至是当不允许对文件进行访问时-例如,当从Internet下载了一个管理控件,并运行它,为它提供了有限的许可权但没有权力读写文件。 隔离存储是一组新的用于.NET支持的用于本地存储的类型和方法。在本质上,每个组合可以访问磁盘上一断被隔离的存储空间。它不允许访问其它数据,隔离存储只对为它创建的

16、组合有效。 隔离存储也可被应用程序用于保存活动记录,保存设置,或者将状态数据保存到磁盘上以备将来之用。因为隔离存储的位置是预先决定好的,所以隔离存储为指定唯一存储空间提供了一种方便的方式,而不需要决定文件路径。 从本地企业局域网获得的代码具有相似的限制,但更少,它可以访问大限额的隔离存储。最后,从受限站点区域(不信任站点)来的代码没有对隔离存储的访问权。 加密 .NET Framework提供了一组加密对象,它们支持加密算法、数字签名、散列、生成随机数,是通过众所周知的运算法则实现的,如RSA, DSA, Rijndael/AES, Triple DES, DES, 和 RC2, 以及MD5, SHA1, SHA-256, SHA-384 和 SHA-512

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号