Cenni preliminari sulla configurazione protetta

Aggiornamento: novembre 2007

La configurazione protetta può essere utilizzata per crittografare informazioni riservate, ad esempio nomi utente e password, stringhe di connessione al database e chiavi di crittografia, in un file di configurazione di un'applicazione Web, ad esempio Web.config. La crittografia delle informazioni sulla configurazione può migliorare la protezione dell'applicazione. Infatti, anche se un utente non autorizzato riesce ad accedere al file di configurazione, l'accesso alle informazioni riservate viene reso estremamente difficile.

Un file di configurazione non crittografato, ad esempio, può contenere una sezione in cui sono specificate le stringhe di connessione utilizzate per eseguire la connessione a un database, come illustrato nell'esempio riportato di seguito:

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

In un file di configurazione in cui i valori delle stringhe di connessione sono crittografati mediante la configurazione protetta, le stringhe di connessione sono memorizzate in formato crittografato, come illustrato nell'esempio riportato di seguito:

<configuration>

  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
      xmlns="http://www.w3.org/2001/04/xmlenc#">
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <KeyName>RSA Key</KeyName>
          </KeyInfo>
          <CipherData>
            <CipherValue>RXO/zmmy3sR0iOJoF4ooxkFxwelVYpT0riwP2mYpR3FU+r6BPfvsqb384pohivkyNY7Dm4lPgR2bE9F7k6TblLVJFvnQu7p7d/yjnhzgHwWKMqb0M0t0Y8DOwogkDDXFxs1UxIhtknc+2a7UGtGh6Di3N572qxdfmGfQc7ZbwNE=
            </CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>KMNKBuV9nOid8pUvdNLY5I8R7BaEGncjkwYgshW8ClKjrXSM7zeIRmAy/cTaniu8Rfk92KVkEK83+UlQd+GQ6pycO3eM8DTM5kCyLcEiJa5XUAQv4KITBNBN6fBXsWrGuEyUDWZYm6Eijl8DqRDb11i+StkBLlHPyyhbnCAsXdz5CaqVuG0obEy2xmnGQ6G3Mzr74j4ifxnyvRq7levA2sBR4lhE5M80Cd5yKEJktcPWZYM99TmyO3KYjtmRW/Ws/XO3z9z1b1KohE5Ok/YX1YV0+Uk4/yuZo0Bjk+rErG505YMfRVtxSJ4ee418ZMfp4vOaqzKrSkHPie3zIR7SuVUeYPFZbcV65BKCUlT4EtPLgi8CHu8bMBQkdWxOnQEIBeY+TerAee/SiBCrA8M/n9bpLlRJkUb+URiGLoaj+XHym//fmCclAcveKlba6vKrcbqhEjsnY2F522yaTHcc1+wXUWqif7rSIPhc0+MT1hB1SZjd8dmPgtZUyzcL51DoChy+hZ4vLzE=
        </CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>

Quando la pagina viene richiesta, NET Framework decrittografa le informazioni relative alla stringa di connessione e le rende disponibili all'applicazione.

Nota:

Non è possibile utilizzare la configurazione protetta per crittografare la sezione configProtectedData di un file di configurazione. Inoltre, la configurazione protetta non può essere utilizzata per crittografare le sezioni della configurazione che non utilizzano un gestore di sezione o quelle che non fanno parte della configurazione della crittografia gestita. Le sezioni di configurazione che non è possibile crittografare mediante la configurazione protetta sono le seguenti: processModel, runtime, mscorlib, startup, system.runtime.remoting, configProtectedData, satelliteassemblies, cryptographySettings, cryptoNameMapping e cryptoClasses. Per proteggere le informazioni riservate presenti in tali sezioni di configurazione, si consiglia di utilizzare altri sistemi di crittografia delle informazioni riservate, ad esempio l'applicazione console per l'impostazione del Registro di sistema ASP.NET (Aspnet_setreg.exe). Per informazioni sull'applicazione console per l'impostazione del Registro di sistema ASP.NET (Aspnet_setreg.exe), vedere l'articolo Q329290, "How to use the ASP.NET utility to encrypt credentials and session state connection strings", della Microsoft Knowledge Base disponibile nel sito Web del supporto tecnico Microsoft.

Nota sulla sicurezza:

Le informazioni sulla configurazione crittografate vengono decrittografate al momento del caricamento nella memoria utilizzata dall'applicazione. Se la memoria è compromessa, anche le informazioni riservate contenute nella sezione relativa alla configurazione protetta potrebbero risultare danneggiate.

Utilizzo della configurazione protetta

È possibile gestire la configurazione protetta utilizzando lo strumento di ASP.NET per la registrazione di IIS (Aspnet_regiis.exe) o le classi della configurazione protetta nello spazio dei nomi System.Configuration.

Nello strumento Aspnet_regiis.exe, che si trova nella cartella %SystemRoot%\Microsoft.NET\Framework\versionNumber, sono disponibili opzioni per la crittografia e la decrittografia delle sezioni di un file Web.config, la creazione o l'eliminazione di contenitori di chiavi, l'esportazione e l'importazione di informazioni sul contenitore di chiavi e la gestione dell'accesso a un contenitore di chiavi.

La crittografia e la decrittografia del contenuto di un file Web.config vengono eseguite mediante una classe ProtectedConfigurationProvider. Nell'elenco riportato di seguito sono indicati i provider di configurazioni protette inclusi in .NET Framework:

Entrambi i provider offrono la crittografia avanzata dei dati. Se, tuttavia, si desidera utilizzare lo stesso file di configurazione crittografato su più server, ad esempio una Web farm, solo RsaProtectedConfigurationProvider consente di esportare le chiavi di crittografia utilizzate per crittografare i dati e importarli in un altro server.

È possibile specificare il ProtectedConfigurationProvider da utilizzare configurandolo nel file Web.config dell'applicazione. In alternativa, è possibile utilizzare una delle istanze di ProtectedConfigurationProvider configurate nel file Machine.config. Per ulteriori informazioni, vedere Specifica di un provider di configurazione protetta.

Dopo aver specificato il provider da utilizzare, è possibile crittografare o decrittografare il contenuto del file Web.config per l'applicazione. Per ulteriori informazioni, vedere Crittografia e decrittografia di sezioni di configurazione.

Nota:

Una procedura ottimale per la protezione delle applicazioni Web consiste nel mantenere il server applicazioni costantemente aggiornato installando le ultime patch di protezione per Microsoft Windows e Internet Information Services (IIS), oltre a tutte le patch di protezione per Microsoft SQL Server o per altre origini dati delle appartenenze. Per informazioni più dettagliate sulle procedure consigliate per scrivere codice protetto e proteggere le applicazioni, consultare il testo "Writing Secure Code" di Michael Howard e David LeBlanc e leggere le istruzioni disponibili sul sito Web Microsoft Patterns and Practices (informazioni in lingua inglese).

Vedere anche

Attività

Procedura dettagliata: crittografia delle informazioni di configurazione utilizzando la configurazione protetta

Altre risorse

Crittografia delle informazioni di configurazione utilizzando la configurazione protetta