Share via


ASP.NET 信任層級和原則檔

更新:2007 年 11 月

信任層級是使用 <securityPolicy> 組態項目與原則檔產生關聯,這個項目只有在站台層級組態 (Web.config) 檔中才有效。您可以將項目加入指定信任層級名稱和要使用之原則檔的組態區段,藉此加入或移除信任層級。預設信任檔會安裝在 Aspnet_isapi.dll 檔所在資料夾下的 Config 目錄中。這個位置與 Machine.config 組態檔和執行階段安全性原則檔的位置相同。

Full 信任層級屬於特例。由於 ASP.NET 主機相當於在近端電腦區域中具有完全信任,所以不會將任何額外的原則套用到這些應用程式。因此,Full 信任層級會對應到內部處理常式,而且 ASP.NET 不會將其他原則加入完全信任應用程式的應用程式定義域中。

下列範例會示範將信任層級對應至不同原則檔之組態檔的 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>

如果不想讓應用程式指定自己的信任層級,可以指定 <location> 指示詞並將 allowOverride 屬性設定為 false。您可能會想要在裝載多個應用程式、並且需要限制裝載應用程式信任層級的伺服器上,執行這項操作。

修改信任層級檔案

您可以變更原則檔或使用自訂使用權限集合建立新的原則檔。例如,您可以複製 Web_hightrust.config 檔的內容並指派進行 OLEDB 連接的使用權限,方法是先將 OleDbPermission 類別加入至原則檔的 SecurityClasses 區段,如以下程式碼範例所示。

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

然後,您可以指定已指定之 OleDbPermission 的參數,包括 OLEDB 連接字串 (Connection String) 的限制。接著,您可以指定哪些使用權限集合含有 OleDbPermission 安全性類別,方法是將 IPermission 項目加入至信任原則檔中具有名稱 ASP.NET 的 PermissionSet 項目。例如,下列程式碼範例會指定只有允許的 OLEDB 連接才能授與對 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) 進行連接的存取權,不過對於允許的 OLEDB 連接則會具有限制。下列程式碼範例會指定只允許對 Access 資料庫進行允許的 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>

您可以儲存更新的信任原則檔並用它來取代目前的 Web_hightrust.config 檔,或者您也可以建立新的信任原則檔並指定它做為 High 信任層級的原則檔,或建立新的信任層級,如下列程式碼範例所示。

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

為了保留預設的設定值,ASP.NET 內含兩份包含信任層級設定的檔案。其中一份使用的副檔名是 .config,如稍早的組態區段中所示;.config 檔會包含系統使用的每個信任層級設定。第二份使用的副檔名是 .config.default,其中會包含相關信任層級的預設設定值。如果目前的信任層級設定經過修改,而您想要還原成預設的設定值,可以用 .config.default 檔的內容取代 .config 檔的內容。

如需管理信任原則檔的詳細說明,請參閱 Patterns and Practices (PAG): Security Guidance for Applications 中的<How To: Use Medium Trust in ASP.NET 2.0>。

請參閱

概念

ASP.NET 原則機制

其他資源

ASP.NET Web 應用程式安全性