日期:2011-09-01 浏览次数:20604 次
通过对程序集进行强命名并为该程序集添加策略,可以方便地为个别程序集处理代码访问安全性。但是,作为动态页编译的结果,将动态生成许多 ASP.NET 程序集,因此这些程序集未进行强命名,所以需要附加功能。
ASP.NET 允许您向应用程序分配对应于一组预定义权限的可配置信任级别。默认情况下(除非显式更改配置),应用程序将接收到与它们提供的证据相称的信任级别。例如,本地应用程序必须在 MyComputer 区域中使用 Full 信任权限集运行,位于通用命名规则 (UNC) 共享上的应用程序必须在 Intranet 区域中使用 LocalIntranet 限制权限集运行。如果要使用低于 Full 信任的级别运行 Web 应用程序,则您必须使用 ASP.NET 信任级别和策略文件中定义的某个预定义信任级别来实施部分信任策略。
您可以使用以下配置设置重写默认行为并将应用程序和给定的安全策略关联起来。
<location path="MyApp" allowOverride="false"><trust level="High"originUrl="http://www.contoso.com"/></location>
<trust> 配置标记可应用于计算机级别或层次结构中的任何应用程序根目录。
如果要为整个站点设置策略,您可以通过将站点的根目录指定为路径位置完成该操作,如下所示。
<location path="ContosoSite" allowOverride="false"><trust level="High"originUrl="http://www.contoso.com"/></location>
如果不想让应用程序能够指定它们自己的信任级别(多数共享服务器安装中是这种情况),则在使用 allowOverride 属性指定 <location> 指令时应小心。
下表列出了 <trust> 元素默认支持的属性。
属性 | 说明 | 默认支持的值 |
---|---|---|
level | 指定应用程序将在其中运行的安全区域。 | Full、High、Medium、Low 和 Minimal。 |
originUrl | 允许管理员设置应用程序的源的 URL。 这允许依赖于宿主概念的权限正常工作 | 格式正确的 HTTP URL。 |
默认情况下,向与不同的安全级别关联的策略授予的权限显示在下表中。
级别 | |||||
---|---|---|---|---|---|
权限 | 完全 | 高 | 中 | 低 | 最小 |
AspNetHostingPermission | 完全 | 高 | 中 | 低 | 最小 |
Environment | Un | Un | 读:TEMP、TMP、OS、USERNAME、COMPUTERNAME | ||
FileIO | Un | Un | 读、写、追加、路径发现:应用程序目录 | 读、路径发现:应用程序目录 | |
IsolatedStorage | Un | Un | AssemblyIsolationByUser、不受限制的用户配额 | 1 MB 配额(对于个别站点可能有所变化)、AssemblyIsolationByUser | |
Reflection | Un | ReflectionEmit | |||
Registry | Un | ||||
Security | Un | 执行、断言、控制主体、控制线程、远程处理配置 | 执行、断言、控制主体、控制线程、远程处理配置 | 执行 | 执行 |