2010-03-17 17 views
19

Ho scritto il nome del mio database, nome utente e password nel mio file web.config come stringa di connessione.Cifratura della stringa di connessione nel file web.config in C#

Voglio crittografare questi dati. Come posso farlo?

<connectionStrings> 
    <add name="ISP_ConnectionString" connectionString="Data Source=JIGAR; 
      Initial Catalog=ISP;Integrated Security=True; 
      User ID=jigar;Password=jigar123; 
      providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+0

Potrebbe valere la pena dare un'occhiata: http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx – Brett

risposta

5

ho una particolare applicazione, che io chiamo la seguente routine di all'avvio:

Private Sub CheckConfigFile() 
    Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 
    Dim sec As ConfigurationSection = config.AppSettings 

    If sec IsNot Nothing Then 
     If sec.SectionInformation.IsProtected = False Then 
      Debug.Write("Encrypting the application settings...") 
      sec.SectionInformation.ProtectSection(String.Empty) 
      sec.SectionInformation.ForceSave = True 
      config.Save(ConfigurationSaveMode.Full) 
      Debug.WriteLine("done!") 
     End If 
    End If 
End Sub 
+14

La crittografia all'avvio dell'applicazione non ti aiuta se qualcuno si rompe nel tuo server web. Dovrebbe essere crittografato quando viene distribuito. –

+4

+1 per dare una risposta piuttosto che un semplice link. –

+0

Eccellente. Anziché eseguirlo all'avvio, crea una pagina ASPX separata in cui è possibile eseguire questo codice secondo necessità (subito dopo l'implementazione). Per le persone con "", imposta temporaneamente "" prima di eseguirlo, quindi torna a "Medio" quando hai finito. –

15

si può semplicemente utilizzare lo strumento apnet_regiis per farlo, basta fare

C:\WINDOWS\Microsoft.Net\Framework(64)\(.Net version)\aspnet_regiis -pe "connectionStrings" 

per una specifica applicazione è possibile utilizzare l'argomento dell'app -app nome applicazione, e per un sito specifico è possibile utilizzare anche l'argomento sito "-site sito id ".

Per ulteriori dettagli, vedere http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx.

Si noti che questo funziona solo per un'applicazione Web e non per un'applicazione Windows.

Si noti inoltre che è necessario eseguirlo da un prompt dei comandi con privilegi elevati ("Esegui come amministratore").

+1

Sta crittografando la stringa di connessione con la chiave DPAPI, che è specifica per una macchina. In un ambiente Webfarm, funzionerà? – Dhanuka777

+0

@Dhanuka Perché non dovrebbe? –

+1

rispondendo alla mia domanda, beh dovrebbe funzionare se la crittografia viene eseguita separatamente su entrambi i server. Mi è venuto in mente che non è possibile utilizzare il file crittografato di Webconfig nel server A per l'utilizzo nel server B. – Dhanuka777

Problemi correlati