科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件.NET 框架中的安全性概述 证据

.NET 框架中的安全性概述 证据

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

.NET 框架中的安全性概述 证据

作者:Demien Watkins 2007年10月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

无论何时向运行库中加载程序集时,宿主环境都会向安全系统提供该程序集的证据。证据构成了向代码访问安全性策略系统输入的内容,这些输入决定了程序集会收到哪些权限。

.NET 框架附带了一些类,在安全系统中,这些类被用作标准形式的证据:

  • Zone 与 Internet Explorer 中使用的区域具有相同的概念。

  • URL 一个标识特定资源的特定 URL 文件位置,如 http://www.microsoft.com/test。

  • Hash 使用像 SHA1 这样的散列算法生成的程序集散列值。

  • Strong Name 程序集的强名称签名。强名称代表一种版本化、加密的加强方式,用于引用和标识特定签名方的一个(或全部)程序集。有关详细信息,请参阅 .NET Framework SDK

  • Site 代码来自的站点。URL 比站点的概念更具体;例如 www.microsoft.com 就是一个站点。

  • Application Directory 要从中加载代码的目录。

  • Publisher certificate 程序集的 Authenticode 数字签名。

    从理论上说,任何托管代码都可以组成证据。上面只是一些在 .NET 框架中具有相应成员条件的类型,因此可以将它们集成到安全策略中,而不必编写自定义安全对象。有关安全策略和代码组的详细信息,请参阅下面的内容。

下面的程序是证据的一个简单示例,其中证据是在加载程序集时被传递到运行库安全系统的。在本例中,mscorlib 是加载的程序集,它是包含了许多运行库类型(如 ObjectString)的程序集。

using System;
using System.Collections;
using System.Reflection;
using System.Security.Policy;

namespace AssemblyEvidence
{
   class Class1
   {
      static void Main(string[] args)
      {
         Type t = Type.GetType("System.String");
         Assembly a = Assembly.GetAssembly(t);
         Evidence e = a.Evidence;
         IEnumerator i = e.GetEnumerator();
         while(i.MoveNext())
            Console.WriteLine(i.Current);
      }
   }
}

程序的输出显示了对于此程序集向安全系统传递了哪些证据。为简洁起见,已对下面的输出进行了编辑。安全系统采用这个证据,然后根据管理员设置的安全策略为该程序集生成了一个权限集。

<System.Security.Policy.Zone version="1">
   <Zone>MyComputer</Zone>
</System.Security.Policy.Zone>
<System.Security.Policy.Url version="1">
   <Url>
     file:///C:/winnt/microsoft.net/framework/v1.0.2728/mscorlib.dll
   </Url>
</System.Security.Policy.Url>
<StrongName version="1"
            Key="00000000000000000400000000000000"
            Name="mscorlib"
            Version="1.0.2411.0"/>
<System.Security.Policy.Hash version="1">
   <RawData>4D5A90000300000004000000FFFF0000B8000000000000...
     0000000000000000000000000000000000000000000000000000
   </RawData>
</System.Security.Policy.Hash>
 
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章