天天看點

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>      

繼續閱讀