zoukankan      html  css  js  c++  java
  • ASP.NET Trust Level和Policy Files

    Trust Levels通过<securityPolicy>配置元素与policy files关联起来, <securityPolicy>元素仅在站点级别的配置文件(web.config)中有效. 你可以通过在配置部分添加那种指定所使用的trust name和使用的policy file的条目来添加或者移除trust levels. 默认的trust files是被安装在包含Aspnet_isapi.dll文件目录之下的Config目录下的. 这也是Machine.config配置文件存在的地方, 还有运行时security policy文件存放的地方.

    Full trust是一个特例. 因为它完全等同于在本机域(local machine zone)中拥有完全的trust, ASP.NET宿主病不会再这些应用程序上应用任何额外的policy. 所以, Full trust level被映射到一个internal handler上, 并且ASP.NET不会为full-trust的应用程序添加额外的policy到它们的应用程序域上.

    下面的例子展示了一个映射trust levels到不同的policy files的配置文件的securityPolicy部分.

    <system.web>
      <securityPolicy>
        <trustLevel name="Full"    policyFile="internal"/>
        <trustLevel name="High"    policyFile="web_hightrust.config"/>
        <trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>
        <trustLevel name="Low"     policyFile="web_lowtrust.config"/>
        <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
      </securityPolicy>
    </system.web>

    如果你不想要应用程序能够指定他们自己的trust level, 你可以指定一个<location>说明, 并配置allowOverride属性为false. 你可以在一个寄存了多个应用程序的服务器上这样做, 来限制其上的application的trust level.

    修改trust-level file

    ================

    你能够修改policy file或者创建新的policy file并在其中配置自定义的权限集. 举例, 你可以拷贝Web_hightrust.config文件的内容, 首先在policy file的SecurityClasses部分添加一个OleDbPermission类赋予权限来建立OLEDB连接, 如同下面的代码例子:

    <SecurityClass Name="OleDbPermission"
        Description="System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, 
        Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

    你能够为指定的OleDbPermission类指定参数, 包括对OLEDB连接字符串的限制. 下一步, 你可以在trust-policy文件中的, 包括了OleDbPermission安全类的PermissionSet元素中, 添加一个IPermission元素, 指定名字为ASP.NET. 举例说明, 下面的代码例子指定了仅仅是被允许了的OLEDB的connection才被授予不受限的权限来访问Catalog.mdb这个Access的数据库.

    <PermissionSet
      class="NamedPermissionSet"
      version="1"
      Name="ASP.Net">
      <IPermission
        class="OleDbPermission"
        version="1"
        Unrestricted="true" />
    </PermissionSet>

    有些权限, 比如说OleDbPermission这个权限, 允许你指定额外的限制信息来缩小赋予或夺取的权限的范围. 比如说, OleDbPermission权限允许你赋予权限使用OLE DB .NET Framework Data Provider来建立连接访问OLE DB, 但是限制了哪一个OLEDB的connection string可以被允许. 下面的代码例子指定了被允许的OLEDB的连接.

    <IPermission class="OleDbPermission" version="1">
      <add ConnectionString=
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\access_data\catalog.mdb"
            KeyRestrictions=""data source=;user id=;password=;" 
          KeyRestrictionBehavior="AllowOnly"/>
    </IPermission>

     

    你可以保存你更新过的trust-policy文件, 用它代替当前的Web_hightrust.config文件, 或者创建一个新的trust-policy文件作为High trust level的policy file, 要么就用下面的代码的例子再创建一个新的trust level.

    <trustLevel name="HighCustom"
        policyFile="web_highcustom.config"/>

    为了保存默认的配置, ASP.NET包含了两套包含trust-level的配置的文件. 一份拷贝被以.config后缀名命名, 就如同早先configuration的部分那样. .config文件包含被系统使用的每一个级别的配置. 另一份拷贝使用.config.default来做后缀名, 其中包含相关trust level的默认配置. 如果当前的trust-level的配置被修改了, 而你想要恢复默认的配置, 你可以使用这一套的内容去覆盖.config文件中的内容.

    译自:

    ASP.NET Trust Levels and Policy Files

    http://msdn.microsoft.com/en-us/library/wyts434y.aspx

  • 相关阅读:
    [Angular] Using the platform agnostic Renderer & ElementRef
    [HTML5] Focus management using CSS, HTML, and JavaScript
    [TypeScript] Increase TypeScript's type safety with noImplicitAny
    [React] displayName for stateless component
    [Redux] Important things in Redux
    [HTML5] Using the tabindex attribute for keyboard accessibility
    [Angular] @ViewChild and template #refs to get Element Ref
    [Angular] @ViewChildren and QueryLists (ngAfterViewInit)
    [Angular] Difference between Providers and ViewProviders
    [Angular] Difference between ngAfterViewInit and ngAfterContentInit
  • 原文地址:https://www.cnblogs.com/awpatp/p/1665164.html
Copyright © 2011-2022 走看看