Web.Config中的trust元素
这个元素配置应用在一个application上的code access security(CAS)的等级. 如果你想让web application运行在低于Full trust的时候, 使用这个元素.
语法:
<trust level="[Full|High|Medium|Low|Minimal]" originUrl="URL" processRequestInApplicationTrust = "[True|False]" />
属性和元素
=============
- level: 这个属性指定了应用程序运行所处的trust level. 任何一个trust level都被映射到一个单独的XML pllicy文件, 映射方式是通过web.config文件中的trustLevel元素. Policy文件列出了该trust level所赋予应用程序的权限集. 更多信息, 请参考securityPolicy Element (ASP.NET Settings Schema)元素, 或者是下面的可能的值, 下面的值按照限制程度增加的顺序排列.
- Full 指定了不受限的权限. 赋予ASP.NET应用程序权限来访问任何的受操作系统安全制约的资源. 所有的特权操作都被支持. 这个配置的名字在AspNetHostingPermissionLevel的枚举类型中叫做Unrestricted.
- High 指定了高水平的code access security, 它意味着应用程序默认不能做下列的事情:
- 调用非托管代码
- 调用服务组件
- 写event log
- 访问Microsoft Message Queuing的队列
- 访问ODBC, OleDb, 或 Oracle数据源
- Medium 指定了一个中等水平的code access security, 它意味着, 除了High的限制之外, ASP.NET应用程序默认还不能做下面的事情:
- 访问应用程序目录之外的文件
- 访问注册表
- 进行网络或者是web services的调用(比如说使用System.Net..::.HttpWebRequest类)
- Low 指定了低水平的code access security, 它意味着, 除了Medium的限制之外, 默认它还不能做:
- 向文件系统写入信息
- 调用Assert方法
- Minimal 指明了最低水平的code access security, 它意味着应用程序只有执行的权限.
- originUrl: 是一个可选的字符串属性. 它指定了一个使用受限制的WebPermission权限访问的URL, 这里所说的受限制的WebPermission权限就是配置的Medium trust. 如果这个选项出现, 这就可以被应用到某些类上, 比如说HttpWebRequest, 来允许被WebPermission指定的到特定URLs上的连接. 这允许了主机上依赖于这个概念的权限正常地工作.
- processRequestInApplicationTrust: 可选的布尔值属性. 指定了是否页面请求会自动地受限于应用在ASP.NET应用程序上的trust policy文件上配置好的权限. trust policy文件是在securityPolicy元素中的trustLevel属性中指定的. 使用trust元素的level属性, 一个单独的trust policy可以被应用到ASP.NET应用程序上. 如果这个值被设置为false, 即使level属性被设置为了另外的trust level, ASP.NET请求也能够潜在地在Full trust下执行. 除非有特别的原因这么做, 不要修改默认值true.
Remarks
==============
trust元素能够配置应用到一个应用程序上的code access security(CAS)的水平. Security Policy文件被映射到securityPolicy 集合元素中的trust level名字上. policy文件列表列出了通过trust level赋予的权限集. trust元素指定了ASP.NET应用程序应用哪一个水平的trust. 更多信息请参考ASP.NET Trust Levels and Policy Files.
默认情况下, web应用程序运行在full trust之下. Full-trust的应用程序被code access security policy赋予不受限制的code access permission. 这些permission包括built-in的系统权限以及自定义权限. 这意味着code access security不会阻止你的应用程序访问任何安全的资源. 对资源的访问动作是成功还是失败纯粹地取决于系统级的安全(system-level security). 如果一个应用程序被配置为非full trust, 那么它就被partial-trust application. Partial-trust应用程序有受限的权限, 为了应用程序而去访问安全资源会受到限制.
了为在宿主环境中提高安全, 你应该在root web.config文件中使用location元素来包括主securityPolicy和trust两个元素, 并且设定allowOverride="False"来阻止应用程序在更加具体的web.config文件中覆盖掉这个设置. 如果你想要为不同的宿主应用程序配置不同的trust level的话, 你还可以选择使用多重location元素, 每一个都有一个不同的path属性.
一下的代码段摘自SharePoint Portal Server 2003中一个站点的web.config文件. SharePoint应用了这种技术.
<system.web> <securityPolicy> <trustLevel name="WSS_Medium" policyFile="C:\Prog~\Com~ Files\...\60\config\wss_mediumtrust.config" /> <trustLevel name="WSS_Minimal" policyFile="C:\Prog~\Com~ Files\...\60\config\wss_minimaltrust.config" /> </securityPolicy> <trust level="WSS_Minimal" originUrl="" /> </system.web>
摘译自:
trust Element (ASP.NET Settings Schema)