實作受保護的組態提供者

更新:2007 年 11 月

受保護的組態能夠讓您加密 ASP.NET 應用程式 Web.config 檔案的區段,以便保護應用程式使用的敏感資訊。即使攻擊者取得組態檔的存取權,加密組態資訊能夠讓攻擊者不易取得敏感資訊的存取權,而提升應用程式的安全性。ASP.NET 包含兩種能夠用來加密 Web.config 檔案之區段的受保護組態提供者:使用 RSACryptoServiceProvider 加密組態區段的 RsaProtectedConfigurationProvider,以及使用 Windows Data Protection API (DPAPI) 加密組態區段的 DpapiProtectedConfigurationProvider

在某些情況下,您可能需要使用除了 RSA 或 DPAPI 提供者所提供之演算法之外的演算法加密資訊。在這種情況下,您可以建置 ASP.NET 使用的自訂受保護組態提供者。

受保護組態提供者的必要類別

若要實作受保護的組態提供者,請建立繼承 ProtectedConfigurationProvider 抽象類別的類別 (此抽象類別來自 System.Configuration 命名空間)。ProtectedConfigurationProvider 抽象類別繼承來自 System.Configuration.Provider 命名空間的 ProviderBase 抽象類別,所以您必須也要實作 ProviderBase 類別的必要成員。下表列出,您必須從 ProviderBaseProtectedConfigurationProvider 抽象類別實作的屬性和方法。若要檢視每一成員的實作,請參閱 HOW TO:建置並執行受保護的組態提供者範例

必要的 ProviderBase 成員

成員

說明

Initialize 方法

設定提供者執行個體的屬性值,包括實作特定值和應用程式組態中提供的選項。

輸入提供者的名稱和組態設定的 NameValueCollection

必要的 ProtectedConfigurationProvider 成員

成員

說明

Encrypt 方法

執行加密。輸入包含要加密之組態區段的 XmlNode 物件。例如,如果要加密的組態區段是 connectionStrings 區段,則 XmlNode 物件代表類似下列程式碼範例的 XML 資料。

<connectionStrings>
  <add name="SampleConnectionString" 
    connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" />
</connectionStrings>

Encrypt 方法會加密 XmlNode 物件的 OuterXml 值,並傳回 XmlNode 物件,其中 EncryptedData 項目是根項目,如下列程式碼範例所示:

<EncryptedData>
  <!-- encrypted contents -->
</EncryptedData>

EncryptedData 項目內容的格式是由實作決定。當項目加密時,ASP.NET 會將 XmlNode 物件傳遞至 Decrypt 方法,其中 EncryptedData 項目是根項目。

Decrypt 方法

執行解密。輸入包含加密組態區段之 EncryptedData 項目的 XmlNode 物件。例如,如果 connectionStrings 區段是已加密的組態區段,XmlNode 物件代表類似下列程式碼範例中反白顯示的 XML 資料。

<connectionStrings configProtectionProvider="CustomProvider">
  <EncryptedData>    <!-- encrypted contents -->  </EncryptedData>
</connectionStrings>

Decrypt 方法會解密 XmlNode 物件的內容,並傳回代表 EncryptedDataXmlNode 物件解密內容的 XmlNode 物件。例如,如果 connectionStrings 區段已加密,Decrypt 方法會傳回使用類似下列程式碼範例中 XML 資料的 XmlNode 物件。

<connectionStrings>
  <add name="SampleConnectionString" 
    connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" />
</connectionStrings>

範例提供者

如需使用 TripleDESCryptoServiceProvider 類別加密和解密 Web.config 檔案區段的範例自訂受保護組態提供者,請參閱 HOW TO:建置並執行受保護的組態提供者範例

請參閱

工作

HOW TO:建置並執行受保護的組態提供者範例

其他資源

使用受保護的組態加密組態資訊