Share via


trust 元素(ASP.NET 设置架构)

[本文档仅供预览,在以后的发行版中可能会发生更改。包含的空白主题用作占位符。]

配置应用于应用程序的代码访问安全性 (CAS) 的级别。 如果希望以低于 Full 的信任级别运行 Web 应用程序,请使用此元素。

<trust 
   hostSecurityPolicyResolverType ="security policy resolution type"
   legacyCasModel = "[True|False]"
   level="[Full|High|Medium|Low|Minimal]" 
   originUrl="URL"
   permissionSetName = "name of the permission set"
   processRequestInApplicationTrust = "[True|False]" 
/>

特性和元素

以下几节描述了特性、子元素和父元素。

特性

特性

说明

hostSecurityPolicyResolverType

可选的字符串特性。

指定自定义安全策略解决方案类型。 此特性设为空字符串时,ASP.NET 会使用默认策略来确定程序集的权限。 评估权限的默认策略向全局程序集缓存 (GAC) 程序集授予完全信任,向其他程序集授予部分信任。

此特性不能设为 null 值。

默认值为空 string。

legacyCasModel

可选的布尔特性。

指定是否启用旧版代码访问安全性 (CAS)。

在启用旧式代码访问安全性时,以下安全规则适用:

  • 代码访问安全性 (CAS) 策略从计算机策略和指定的 ASP.NET 部分信任策略文件的组合建立。

  • 部分信任应用程序域在应用程序域级别恢复为完全信任。

  • 使用位于 .NET Framework 安装目录的 CONFIG 目录中的旧版部分信任文件,而不使用位于相同目录中的新版部分信任文件。 旧式文件包括在 .NET Framework 1.1 或 .NET Framework 2.0 SP1 中找到的成员条件。

  • 应用用于评估权限的其他成员条件。 这些条件在 ASP.NET 部分信任的文件中定义。 随 .NET Framework 4 版本一起提供的 CONFIG 目录包含旧的部分信任策略文件。 这些文件在其名称中具有旧功能并包含 .NET Framework 2.0 SP1 部分。 这些部分包含针对程序集评估 CAS 策略所需的非空成员条件。

  • 如果 ASP.NET 应用程序在部分信任和安全策略文件中运行,使信任级别映射到默认的部分信任配置文件之一,则 ASP.NET 将自动选择相应的旧版配置文件。 例如,如果通常从 Web_mediumtrust.config 加载安全策略,则传统模式中将由 ASP.NET 从 Legacy.web_mediumtrust.config 加载安全策略。

默认值为 false。

level

必选的 String 特性。

指定将运行应用程序的信任级别。 每个信任级别使用配置文件中的 trustLevel 元素映射到单个 XML 策略文件。 该策略文件列出由每个信任级别授予的权限集。 有关 ASP.NET 和策略文件的信息,请参见 ASP.NET Trust Levels and Policy Files

如果 securityPolicy 元素(ASP.NET 设置架构) 元素的 trustLevel 元素中定义了匹配的安全策略映射,则此特性可以是用户定义的值。此属性还可以是下列可能值之一,这些值按限制程度的递增顺序排列。

值说明
Full 指定无限制的权限。授予 ASP.NET 应用程序访问任何资源的权限(受操作系统安全性的限制)。支持所有被授予特权的操作。该设置在 AspNetHostingPermissionLevel 枚举中称为 Unrestricted。
High 指定高级别的代码访问安全性,这意味着应用程序默认情况下不能执行下列任何操作:
  • 调用非托管代码。

  • 调用服务组件。

  • 写入事件日志。

  • 访问 Microsoft“消息队列”队列。

  • 访问 ODBC、OleDb 或 Oracle 数据源。

Medium 指定中等级别的代码访问安全性,这意味着除了 High 限制外,ASP.NET 应用程序默认情况下还不能执行下列任何操作:
  • 访问应用程序目录以外的文件。

  • 访问注册表。

  • 调用网络或 Web 服务(例如使用 System.Net.HttpWebRequest 类)。

Low 指定低级别的代码访问安全性,这意味着除了 Medium 限制外,应用程序默认情况下还不能执行下列任何操作:
  • 写入文件系统。

  • 调用 Assert 方法。

Minimal 指定最低级别的代码访问安全性,这意味着应用程序只有执行权限。

默认值是 Full(无限制)。

originUrl

可选的 String 特性。

指定 URL 以用于在中等信任中配置的限制 WebPermission 权限。 如果存在,则此属性可用于只允许连接到 WebPermission 所指定的特定 URL 的某些类(如 HttpWebRequest)。 这允许依赖于宿主概念的权限正常工作。

permissionSetName

可选的字符串特性。

指定权限集的名称。

的默认值为“ASP.Net”。

processRequestInApplicationTrust

可选的 Boolean 特性。

指定页请求是否自动只限于在信任策略文件中配置的权限,该文件应用于此 ASP.NET 应用程序。

信任策略文件在 securityPolicy 元素的 trustLevel 元素中指定。 单个信任策略通过使用 trust 元素的 level 特性应用于 ASP.NET 应用程序。

如果设置为 False,则即使 level 特性指定了不同的信任级别,ASP.NET 请求也可能可以在 Full 信任级别下执行。 除非有特定的原因需要这样做,否则不要重置默认值为 true 的此特性。

此特性是 .NET Framework 2.0 版中的新特性。

默认值为 True。

子元素

无。

父元素

元素

说明

configuration

指定公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。

system.web

指定配置文件中 ASP.NET 配置设置的根元素,并包含用于配置 ASP.NET Web 应用程序和控制应用程序行为方式的配置元素。

备注

trust 元素配置应用于应用程序的代码访问安全性 (CAS) 的级别。 安全策略文件映射到 securityPolicy 集合元素中的信任级别名称。 该策略文件列出由信任级别授予的权限集。 trust 元素指定应用于 ASP.NET 应用程序的信任级别。 有关 ASP.NET 和策略文件的信息,请参见 ASP.NET Trust Levels and Policy Files

默认情况下,Web 应用程序使用 Full 信任级别运行。 代码访问安全策略为完全信任级别的应用程序授予的代码访问权限是没有限制的。 这些权限包括内置的系统权限和自定义权限。 这意味着代码访问安全将不会阻止应用程序访问任何受保护的资源。 资源访问尝试成功还是失败完全由操作系统级别的安全性决定。 如果应用程序配置的信任级别不是 Full,则表示该应用程序是部分信任的应用程序。 部分信任的应用程序具有受限的权限,这些权限限制应用程序对受保护资源的访问。

若要提高宿主环境中的安全性,请使用根 Web.config 文件中的 location 元素包围宿主应用程序的 securityPolicy 和 trust 元素,并使用 allowOverride="False" 特性来阻止应用程序重写本地程度更高的 Web.config 文件中的设置。 如果要为不同的宿主应用程序配置不同的信任级别,可以选择使用具有不同路径特性的多个位置元素。 若要查看该配置类型的示例,请参见本主题后面的“示例”部分。

备注

在 .NET Framework 1.0 版基础上构建的 Web 应用程序始终以 Full 信任级别运行,因为 System.Web 中的类型要求调用方的信任级别为完全信任。如果升级到较新版本的 .NET Framework,在未测试任何以前存在的应用程序的情况下,请不要更改信任级别。

默认配置

下面的默认 trust 元素是在根 Web.config 文件中配置的。

<location allowOverride="true">
<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>
   <trust 
      level="Full" 
      originUrl="" 
      processRequestInApplicationTrust="true" 
   />
</system.web>
</location>

示例

下面的代码示例演示如何使用根 Web.config 文件为服务器上的所有 ASP.NET 应用程序指定 Medium 信任级别设置以及用于锁定这些设置的 location 元素。 同一配置文件中的另一个 location 位置元素用于允许 Default Web Site/Temp 应用程序的 Web.config 文件重写根 Web.config 文件中的设置。

<location allowOverride="false">
  <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>
</location>

<location allowOverride="false">
  <system.web>
    <trust level="Medium" originUrl="" />
  </system.web>
</location>

<location allowOverride="true" path="Default Web Site/Temp">
  <system.web>
    <trust level="Medium" originUrl="" />
  </system.web>
</location>

元素信息

配置节处理程序

TrustSection

配置成员

AspNetHostingPermission

可配置的位置

Machine.config

根级别的 Web.config

应用程序级别的 Web.config

要求

Microsoft Internet 信息服务 (IIS) 版本 5.0、5.1 或 6.0

.NET Framework 版本 1.0、1.1 或 2.0

Microsoft Visual Studio 2003 或 Visual Studio 2005

请参见

任务

How to: Configure Specific Folders Using Location Settings

How to: Lock ASP.NET Configuration Settings

参考

system.web 元素(ASP.NET 设置架构)

configuration 元素(常规设置架构)

securityPolicy 的 trustLevel 元素(ASP.NET 设置架构)

securityPolicy 元素(ASP.NET 设置架构)

System.Configuration

System.Net.Configuration

TrustSection

AspNetHostingPermission

概念

ASP.NET Trust Levels and Policy Files

ASP.NET Trust Levels and Policy Files

Securing Configuration

Configuration Inheritance

其他资源

ASP.NET Web Application Security

Administering Security Policy

常规配置设置 (ASP.NET)

ASP.NET 配置设置

Configuring ASP.NET Applications

ASP.NET Configuration Files

ASP.NET Configuration API