• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

.NET 框架中的安全性概述

发布: 2008-5-13 10:38 | 作者: 不详 | 来源: 赛迪 | 查看: 126次 | 进入软件测试论坛讨论

领测软件测试网



图 3. 堆栈审核示例


函数可以选择修改堆栈审核,有一些机制可完成这种修改。首先,一个函数可能需要确定调用它的多个函数。在这种情形下,它可以断言一个特定的权限。如果发生了查找断言权限的堆栈审核,那么在检查这个函数的激活记录以寻找该权限时,如果该函数具有它断言的权限,则检查成功,堆栈审核将会终止。断言本身是一个受保护操作,因为它将向断言访问受保护资源权限的函数的所有调用方开放对该受保护资源的访问权限。因此,在运行库中,安全系统会检查包含自我断言的函数的程序集是否具有它试图断言的权限。 

修改堆栈审核的另一种办法是支持函数拒绝权限。当一个函数知道它不应该访问某个资源并拒绝权限时,就可能发生这种情形。PermitOnly 提供了类似 deny 的功能,因为它会导致堆栈审核失败。但 deny 指定的是会导致堆栈审核失败的权限集,而 PermitOnly 指定的则是继续堆栈审核所需的权限集。 

注在使用 Deny 堆栈修饰符时,应该小心。如果早期的堆栈帧是一个断言,则会忽略 Deny 修饰符。另外,拒绝基于路径的权限是相当困难的,这是因为经常有各种不同的路径字符串实际是指向相同位置的。拒绝一个特定路径表达式仍会开放其他的路径。

还有最后一个需要知道的要点。在任何时刻,一个堆栈帧只能有一个 Deny、一个 PermitOnly 和一个 Assert 处于有效状态。例如,如果开发人员需要断言许多权限,他们就应该创建一个 PermissionSet 来表示该集合,并只进行一个单独的断言。有一些方法可用来删除一个堆栈审核修饰符的当前 PermissionSet 设置,以便注册其他的权限集。此类方法的一个示例是 System.Security.CodeAccessPermission.RevertPermitOnly。

下面的示例说明了前面介绍的各种堆栈修改技术:

using System;
using System.Security;
using System.Security.Permissions;

namespace PermissionDemand
{
   class EntryPoint

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网