Condividi tramite


Implementazione di un provider di configurazione protetta

Aggiornamento: novembre 2007

La configurazione protetta consente di crittografare sezioni di un file Web.config di un'applicazione ASP.NET per proteggere le informazioni riservate utilizzate dall'applicazione. La crittografia può migliorare la protezione dell'applicazione in quanto, anche se un aggressore riesce ad accedere al file Web.config, l'accesso alle informazioni riservate viene reso estremamente difficile. ASP.NET include due provider di configurazione protetta che è possibile utilizzare per crittografare sezioni di un file Web.config: RsaProtectedConfigurationProvider, che utilizza RSACryptoServiceProvider e DpapiProtectedConfigurationProvider, che utilizza la DPAPI (API Data Protection) di Windows per crittografare le sezioni di configurazione.

In alcuni casi, potrebbe essere necessario crittografare le informazioni mediante un algoritmo diverso da quelli disponibili con i provider RSA o DPAPI. In queste situazioni, è possibile compilare un provider di configurazione protetta personalizzato utilizzato da ASP.NET.

Classi obbligatorie per i provider di configurazione protetta

Per implementare un provider di configurazione protetta, è necessario creare una classe che erediti la classe astratta ProtectedConfigurationProvider dallo spazio dei nomi System.Configuration. Poiché la classe astratta ProtectedConfigurationProvider eredita la classe astratta ProviderBase dallo spazio dei nomi System.Configuration.Provider, è necessario implementare anche i membri obbligatori della classe ProviderBase. Nelle tabelle riportate di seguito vengono descritte le proprietà e i metodi che devono essere implementati dalle classi astratte ProviderBase e ProtectedConfigurationProvider. Per visualizzare un'implementazione di ciascun membro, vedere Procedura: generare ed eseguire l'esempio di provider di configurazione protetta.

Membri di ProviderBase obbligatori

Membro

Descrizione

Metodo Initialize

Imposta i valori della proprietà per l'istanza del provider, inclusi i valori specifici dell'implementazione e le opzioni fornite nella configurazione dell'applicazione.

Accetta come input il nome del provider e un oggetto NameValueCollection delle impostazioni di configurazione.

Membri di ProtectedConfigurationProvider obbligatori

Membro

Descrizione

Metodo Encrypt

Esegue la crittografia. Accetta come input un oggetto XmlNode contenente la sezione di configurazione da crittografare. Se, ad esempio, la sezione di configurazione da crittografare è la sezione connectionStrings, l'oggetto XmlNode rappresenta dati XML simili a quelli dell'esempio riportato di seguito.

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

Il metodo Encrypt crittografa il valoreOuterXml dell'oggetto XmlNode e restituisce un oggetto XmlNode in cui un elemento EncryptedData rappresenta l'elemento di primo livello, come illustrato nell'esempio riportato di seguito.

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

Il formato del contenuto dell'elemento EncryptedData dipende dall'implementazione effettuata. Quando l'elemento viene decrittografato, ASP.NET passa un oggetto XmlNode al metodo Decrypt, dove l'elemento EncryptedData rappresenta l'elemento di primo livello.

Metodo Decrypt

Esegue la decrittografia. Accetta come input un oggetto XmlNode contenente l'elemento EncryptedData di una sezione di configurazione crittografata. Se, ad esempio, la sezione connectionStrings è la sezione di configurazione crittografata, l'oggetto XmlNode rappresenta dati XML simili ai dati XML evidenziati nell'esempio riportato di seguito.

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

Il metodo Decrypt decrittografa il contenuto dell'oggetto XmlNode e restituisce un oggetto XmlNode che rappresenta il contenuto decrittografato dell'oggetto EncryptedDataXmlNode. Se, ad esempio, la sezione connectionStrings è crittografata, il metodo Decrypt restituisce un oggetto XmlNode con dati XML simili a quelli dell'esempio riportato di seguito.

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

Provider di esempio

Per un esempio di provider di configurazione protetta personalizzato che utilizzi la classe TripleDESCryptoServiceProvider per crittografare e decrittografare sezioni di un file Web.config, vedere Procedura: generare ed eseguire l'esempio di provider di configurazione protetta.

Vedere anche

Attività

Procedura: generare ed eseguire l'esempio di provider di configurazione protetta

Altre risorse

Crittografia delle informazioni di configurazione utilizzando la configurazione protetta