欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:79334676       资源大小:1.68MB        全文页数:46页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第19章 .NET的安全性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”,包含其他所有的代码组。层次用于确定程序集属于哪一个代码组,如果程序集提供的证据与树中的代码组不匹配,则程序集不属于树的任何一个代码组。 权限:权限是允许每一个代码组执行的动作。例如,权限包括“可以访问用户界面”和“可以访问本地存储器”等。系统管理员通常在Enterprise级、Machine级和User级上管理权限。CLR中的Virtual Execution System用于载入和运行程序。Virtual Execution System提供了执行托管代码所需要的功能,并使用程序集元数据把模块在运行期间连接在一起。当VES载入程序集时,VES通常把程序集与一个或多个代码组相匹配。每一个代码组都被赋予了一个或多个权限,指定各个代码组中的程序集可以执行什么动作。例如,如果MyComputer代码组被赋予FileIOPermission权限,则意味着来自本地机器的程序集可以读写本地文件系统。19.1.1 代码组代码组有一个称之为成员条件的入口需求(entry requirement)。如果要把程序集划归某个代码组,该程序集就必须符合那个代码组的成员条件。例如,成员条件可以是“程序集来自站点”或“这个软件的发布者是Microsoft公司”等。每一个代码组都有一个并且只有一个成员条件。在.NET中,代码组可以使用的成员条件如下: Zone:代码来自的区域 Site:代码来自的Web站点 Strong name:代码唯一的、可验证的名称。强名详见第16章。 Publisher:代码发布者 URL:代码来自的具体位置 Hash value:程序集的散列值 Skip verification:请求Skip verification的代码避开代码验证检查。代码的验证可以确保代码以定义合理和可接受的方式访问类型。运行库不能确保类型不安全的代码是安全的。 Application directory:程序集在应用程序中的位置 All code :符合条件的所有代码 Custom:与用户相关的条件上述成员条件的第一个类型就是Zone,这个类型是最常用的。Zone是一段代码区域的开端,表示下面的内容:MyComputer、Internet、Intranet、Trusted或Untrusted。使用Internet Explorer中的安全选项可以对这些区域进行管理,后面在讨论怎样管理安全性策略时,再讨论这些内容。虽然设置是在Internet Explorer中管理的,但是它们将应用于整个机器。很明显,那些配置选项在非Microsoft浏览器中是不能使用的,实际上,使用.NET Framework编写的页面控件只能在Internet Explorer上工作。代码组的安排是层次状的,根部是All Code成员条件,如图19-1所示。从这个图中可以看出,每一个代码组都有一个成员条件,并且指定赋予代码组的权限。注意,如果程序集不符合代码组中的成员条件,则CLR不会给它匹配那个代码组下面的代码组。图 19-11. Caspol.exe代码访问安全性策略工具本章将花大量的篇幅介绍命令行工具:代码访问安全性策略工具。要得到它的选项列表,只需输入下面的命令:caspol.exe ?使用下面的命令把输出发送给一个文本文件:caspol.exe > output.txt.NET也包括一个Microsoft Management Console管理单元,它用于管理代码访问的安全性。但是,这里只使用命令行实用程序caspol.exe,以易于理解本章的示例,还可以创建脚本,更改安全性策略,在把策略应用到大量的机器上时,这是非常有用的。使用caspol.exe,可以查看机器上的代码组。caspol.exe的执行结果是列出机器上代码组的层次结构,并描述每一个代码组。键入如下命令:caspol.exe listdescription另外,-listdescription选项还有一个缩写方式:-ld。下面是该命令的结果:Microsoft (R) .NET Framework CasPol 2.0.50215.44Copyright (C) Microsoft Corporation. All rights reserved.Security is ONExecution checking is ONPolicy change prompt is ONLevel = MachineFull Trust Assemblies:1. All_Code: Code group grants no permissions and forms the root of the code group tree. 1.1. My_Computer_Zone: Code group grants full trust to all code originating on the local computer 1.1.1. Microsoft_Strong_Name: Code group grants full trust to code signed with the Microsoft strong name. 1.1.2. ECMA_Strong_Name: Code group grants full trust to code signed with the ECMA strong name. 1.2. LocalIntranet_Zone: Code group grants the intranet permission set to code from the intranet zone. This permission set grants intranet code the right to use isolated storage, full UI access, some capability to do reflection, and limited access to environment variables. 1.2.1. Intranet_Same_Site_Access: All intranet code gets the right to connect back to the site of its origin. 1.2.2. Intranet_Same_Directory_Access: All intranet code gets the right to read from its install directory. 1.3. Internet_Zone: Code group grants code from the Internet zone the Internet permission set. This permission set grants Internet code the right to use isolated storage and limited UI access. 1.3.1. Internet_Same_Site_Access: All Internet code gets the right to connect back to the site of its origin. 1.4. Restricted_Zone: Code coming from a restricted zone does not receive any permissions. 1.5. Trusted_Zone: Code from a trusted zone is granted the Internet permission set. This permission set grants the right to use isolated storage and limited UI access. 1.5.1. Trusted_Same_Site_Access: All Trusted Code gets the right to connect back to the site of its origin.Success.NET安全子系统确保每一个代码组中的代码只能做某些事情。例如,Internet 区域中的代码在默认状态下比本地驱动器中的代码有更严格的限制;本地驱动器中的代码通常有访问本地磁盘上数据的权限,但是Internet中的程序集在默认状态下就没有这个权限。使用caspol.exe和它在Microsoft Management Console中的等价选项,可以为每一个代码访问组指定信任级别,还可以按照更小的粒度方式管理代码组和权限。再看看代码访问组,但是,这次的信息比上次要少一些。确保以本地管理员身份登录后,打开命令提示窗口,输入下面的命令:caspol.exe listgroups得到如下信息:Microsoft (R) .NET Framework CasPol 2.0.50215.44Copyright (C) Microsoft Corporation. All rights reserved.Security is ONExecution checking is ONPolicy change prompt is ONLevel = MachineCode Groups:1. All code: Nothing 1.1. Zone - MyComputer: FullTrust 1.1.1. StrongName - 002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293: FullTrust 1.1.2. StrongName - 00000000000000000400000000000000: FullTrust 1.2. Zone - Intranet: LocalIntranet 1.2.1. All code: Same site Web. 1.2.2. All code: Same directory FileIO 'Read, PathDiscovery' 1.3. Zone - Internet: Internet 1.3.1. All code: Same site Web. 1.4. Zone - Untrusted: Nothing 1.5. Zone - Trusted: Internet 1.5.1. All code: Same site Web.Success在输出结果的开头,是Security is ON。在本章后面的内容中,我们将会看到Security可以先关闭,然后再打开。在默认状态下,Execution Checking设置的值是on,这意味着所有的程序集在运行之前,必须给它们赋予执行权限。如果使用caspol (caspol.exe execution on|off)关闭执行检查,则程序集没有执行权限也可以运行。在这种情况下,如果程序集在运行过程中有违背安全性策略的行为,就会产生安全异常。Policy change prompt选项指定在更改安全性策略时,是否可以看到"Are you sure"警告信息。把代码划分为这些组之后,就可以更精细地管理安全性,还可以实现对更少代码的完全信任。注意,每一个组都有一个标记(例如“1.2”),这些标记是.NET自动生成的,在不同的机器上是不同的。通常不是按照每一个程序集来管理安全性,而是使用代码组来管理。如果一台机器上同时安装了几个.NET版本,则caspol.exe只更改与它相关的.NET安装版本的安全性策略。(1) 查看程序集的代码组如果程序集符合代码组的成员条件,它们就属于代码组。回到代码组的示例中,从Web站点http:/intranet/载入程序集,则它匹配的代码组如图19-2所示。这个程序集也是根代码组(All Code)的成员。如果程序集来自本地的网络,则它还是Intranet代码组的成员;但是,当从某一指定站点(如http:/intranet)载入程序集时,它也被赋予FullTrust权限,这意味着程序集的运行没有限制条件。图 19-2使用如下命令,很容易查看程序集所属的代码组:caspol.exe resolvegroup assembly.dll对本地磁盘上的程序集运行这个命令,可以得到如下结果:Microsoft (R) .NET Framework CasPol 2.0.50727.7Copyright (C) Microsoft Corporation. All rights reserved.Level = EnterpriseCode Groups:1. All code: FullTrustLevel = MachineCode Groups:1. All code: Nothing 1.1. Zone - MyComputer: FullTrustLevel = UserCode Groups:1. All code: FullTrustSuccess注意,代码组是在3个级别上列出的,这3个级别是Enterprise、Machine和User。现在只关注Machine级别。如果要了解这3个级别之间的关系,赋予程序集的有效权限是这3个级别上权限的交集。例如,如果在Enterprise级别的策略中删除了Internet区域的FullTrust权限,则Internet 区域中代码的所有权限都被取消,其他两个级别的设置就变得不相关了。现在,对这个程序集执行caspol.exe命令,看看它所属的代码组。但是这次程序集是通过HTTP协议在Web服务器上访问的,这样,程序集成为不同代码组的成员,它的权限受到更严格的限制:caspol.exe resolvegroup http:/server/assembly.dllMicrosoft (R) .NET Framework CasPol 2.0.50727.7Copyright (C) Microsoft Corporation. All rights reserved.Level = EnterpriseCode Groups:1. All code: FullTrustLevel = MachineCode Groups:1. All code: Nothing 1.1. Zone - Internet: Internet 1.1.1. All code: Same site Web.Level = UserCode Groups:1. All code: FullTrustSuccess程序集授予了Internet权限和Same Site Web权限。权限的交集允许代码对UI进行有限的访问,并可以连接到最初生成它的站点。下面详细讨论权限。19.1.2 代码访问权限和权限集想像自己正在一个大公司中管理办公机器网络的安全性策略。在这种情况下,CLR在执行代码之前收集代码的证据是非常有用的;同样,一旦CLR知道了代码来自何处,管理员就必然有机会控制代码在他管理的数百台机器上的行为。这个问题需要使用权限来解决。一旦程序集与代码组相匹配,CLR就会根据安全性策略赋予程序集一些权限。在Windows中管理权限时,通常不是把权限赋予用户,而是把权限赋予用户组。程序集也是如此,也就是说,把权限应用于代码组,而不是各个程序集,这就大大简化了.NET中安全性策略的管理。安全性策略指定代码组中的程序集允许执行什么动作。下面列出了CLR提供的代码访问权限。从中可以看出,使用这些权限,可以很好地控制代码允许做什么和不允许做什么: DirectoryServicesPermission:通过System.DirectoryServices类访问Active Directory的能力 DnsPermission:使用TCP/IP域名系统(DNS)的能力 EnvironmentPermission:读写环境变量的能力 EventLogPermission:读写事件日志的能力 FileDialogPermission:访问用户在Open对话框中选择的文件的能力。通常用于没有赋予FileIOPermission权限,不能对文件进行有限的访问时。 FileIOPermission:处理文件的能力(其中包括读文件、写文件、添加文件的内容,创建、更改和访问文件夹) IsolatedStorageFilePermission:访问私有虚拟文件系统的能力 IsolatedStoragePermission:访问孤立存储器的能力,存储器与各个用户相关,并具有代码身份的一些特征,孤立存储器详见第24章 MessageQueuePermission:通过Microsoft Message Queue使用消息队列的能力 OleDbPermission:使用OLE DB提供程序访问数据库的能力 PerformanceCounterPermission:利用性能计数器的能力 PrintingPermission:打印的能力 ReflectionPermission:使用System.Reflection在运行期间查找类型信息的能力 RegistryPermission:读、写、创建和删除注册表项和值的能力 SecurityPermission:执行、断言权限、调用非托管的代码、忽略验证和其他权力的能力 ServiceControllerPermission:控制Windows服务的能力 SocketPermission:在网络传输地址上创建或接受TCP/IP连接的能力 SQLClientPermission:使用SQL Server的.NET数据提供程序访问SQLServer数据库的能力 UIPermission:访问用户界面的能力 WebPermission:连接Web或接受Web连接的能力对于上面的每一个权限类,通常可以指定更深级别的粒度。例如,在本章后面的一个示例中,请求的不仅仅是文件的访问权限,还指定了文件访问的具体级别。在实践中,如果要利用与上面列出的权限相关的资源,最好在应用程序中加入trycatch错误处理块,以便应用程序运行在受限制的权限下时,能够很好地进行处理。应用程序的设计应该指定应用程序在这些情况下怎样运行,而不应该假定应用程序运行在开发它时的同一安全性策略下。例如,如果应用程序不能访问本地磁盘,它是应该退出呢,还是以另一种方式进行工作呢?一个程序集将与几个代码组相关联;在安全性策略中,程序集的有效权限是程序集所属的所有代码组中权限的并集。也就是说,程序集匹配的每一个代码组都将扩展程序集的权限。在代码组的树中,下面的代码组具有的权限比上面代码组具有的权限要多一些。以代码的身份为基础,CLR可以赋予代码组另一个权限集合。这些权限与CLR收集的关于程序集的证据直接相关,它们称为身份权限(Identity Permissions)。下面是身份权限类的名称: PublisherIdentityPermission:软件发布者的数字签名 SiteIdentityPermission:Web站点的名称,代码来自这个Web站点 StrongNameIdentityPermission:程序集的强名 URLIdentityPermission:URL,代码来自这个URL(其中包括协议,例如http:/) ZoneIdentityPermission:程序集来自的区域把权限赋予代码组,就不需要处理每个程序集了。通常在程序块中应用权限,这就是.NET提供权限集合的原因。代码访问的权限聚合在指定的集合中,下面是已命名的权限集合: FullTrust:没有权限的限制 SkipVerification:不进行验证 Execution:运行的能力,但是不能访问受保护的资源 Nothing:没有权限,代码不能执行 LocalIntranet:本地内部网的默认策略,它是权限全集的子集。例如,文件IO只能在程序集生成的共享上进行读取访问 Internet:未知来源的代码的默认策略,这是限制最严格的策略。例如,在这个权限集合下执行的代码没有文件IO能力,不能读写事件日志,也不能读写环境变量 Everything:这个集合中的所有权限,其中不包括忽略代码验证的权限。管理员可以改变这个权限集合中的权限。默认策略要更强大时,可以使用这个权限集合注意:只能修改Everything权限集合的定义,而其他权限是固定的,不能改变。因为只有CLR能够把身份权限赋予代码,所以身份权限不能包括在权限集合中。例如,如果一段代码是来自某个发布者,管理员把与另一个发布者相关的身份权限赋予这段代码是毫无意义的。CLR在需要时赋予身份权限,这样就可以随时利用那些身份权限。1. 查看程序集的权限假定用户在使用一个Microsoft应用程序,并试图使用一个以前从没用过的特性。应用程序没有把代码的副本保存在本地,因此必须在Internet上请求代码,然后下载到全局程序集缓存中。如果代码是由特定的公司(这个公司已经使用证书签署了程序集)通过Internet发布的,则程序集所属代码组中的成员关系如图19-3所示。图 19-3依照这个示例中的策略,代码组All Code和Internet的权限有限,但图中右下角的代码组却赋予程序集FullTrust权限。程序集的有效权限是它所属所有代码组中权限的并集。当权限以这种方式合并时,有效的权限就是被授予的最高权限,也就是说,程序集所属的每一个代码组都会向程序集的有效权限集中添加权限。正像可以查看程序集所属的代码组一样,也可以查看赋予程序集所属代码组的权限。在查看权限时,不但能够看到代码的访问权限(即允许代码做什么),也可以看到代码的身份权限(身份权限能访问代码在运行期间表现出来的证据)。使用如下的命令,可以查看程序集代码组的权限:caspol.exe resolveperm assembly.dll对一个程序集使用这个命令,并且查看在通过本地的内部网访问程序集时,赋予程序集的代码访问权限和身份权限。如果输入下面的命令,就可以看到代码访问权限和3个身份权限:caspol.exe resolveperm http:/somehost/assembly.dllMicrosoft (R) .NET Framework CasPol 2.0.50727.7Copyright (C) Microsoft Corporation. All rights reserved.Resolving permissions for level = EnterpriseResolving permissions for level = MachineResolving permissions for level = UserGrant =<PermissionSet class="System.Security.PermissionSet"version="1"><IPermission class="System.Security.Permissions.EnvironmentPermission,mscorlib, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" Version="1" Read="Username"/><IPermission class="System.Security.Permissions.FileDialogPermission,mscorlib, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"version="1" Unrestricted="true"/><IPermission class="System.Security.Permissions.IsolatedStorageFilePermission,mscorlib, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" version="1"Allowed="AssemblyIsolationByUser"UserQuota="9223372036854775807" Expiry="9223372036854775807"Permanent="True"/><IPermission class="System.Security.Permissions.ReflectionPermission,mscorlib, Version="2.0.0.0, Culture=neutral,PublicKeyToken= b77a5c561934e089" Version="1"Flags="ReflectionEmit" /><IPermission class="System.Security.Permissions.SecurityPermission,mscorlib, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" version="1"Flags="Assertion, Execution, BindingRedirects"/><IPermission class="System.Security.Permissions.UIPermission,mscorlib, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" version="1"Unrestricted="true" /><IPermission class="System.Security.Permissions.SiteIdentityPermission,mscorlib, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" version="1"Site="somehost" /><IPermission class="System.Security.Permissions.UrlIdentityPermission,mscorlib, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" version="1"Url="http:/somehost/assembly.dll" /><IPermission class="System.Security.Permissions.ZoneIdentityPermission,mscorlib, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" version="1"Zone="Intranet" /><IPermission class="System.Net.DnsPermission,System, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" version="1"Unrestricted="true" /><IPermission class="System.Drawing.Printing.PrintingPermission,System.Drawing, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" version="1"Level="DefaultPrinting" /><IPermission class="System.Net.WebPermission,System, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" version="1"><ConnectAccess><URI uri=" (https|http):/somehost/.*/?"/></ConnectAccess></IPermission></PermissionSet>Success上面的权限都是以XML方式显示出来的,其中包括定义权限的类、包含类的程序集

    注意事项

    本文(c#2005net30高级编程(第5版)第19章NET的安全性.doc)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开