2010-03-17 11 views
19

Ich habe den Namen meiner Datenbank, Benutzername und Passwort in meiner web.config Datei als Verbindungszeichenfolge geschrieben.Verschlüsseln der Verbindungszeichenfolge in web.config Datei in C#

Ich möchte diese Daten verschlüsseln. Wie kann ich es tun?

<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

Vielleicht einen Blick wert: http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx – Brett

Antwort

5

ich eine bestimmte Anwendung, nenne ich die folgende Routine beim Start:

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

Verschlüsseln Sie es beim Start der Anwendung hilft Ihnen nicht, wenn jemand in Ihren Webserver einbricht. Es sollte verschlüsselt werden, wenn es bereitgestellt wird. –

+4

+1 für die Angabe einer Antwort anstatt nur eines Links. –

+0

Ausgezeichnet. Erstellen Sie eine separate ASPX-Seite, auf der Sie diesen Code nach Bedarf ausführen können (direkt nach der Bereitstellung). Für Personen mit "" setzen Sie vorübergehend "", bevor Sie es ausführen, und kehren Sie dann zu "Medium" zurück, wenn Sie fertig sind. –

15

Sie können nur das apnet_regiis Tool verwenden, um das zu tun, tun nur

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

für einen bestimmten Anwendung können Sie das App-Argument -app Anwendungsname, und für eine bestimmte Website können Sie auch die Website-Argument "-site Website id ".

Für weitere Details siehe http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx.

Beachten Sie, dass dies nur für eine Webanwendung und nicht für eine Windows-Anwendung funktioniert.

Beachten Sie auch, dass Sie es über eine Eingabeaufforderung mit erhöhten Rechten ausführen müssen ("run as administrator").

+1

Es verschlüsselt die Verbindungszeichenfolge mit dem DPAPI-Schlüssel, der für eine Maschine spezifisch ist. Wird dies in einer Webfarm-Umgebung funktionieren? – Dhanuka777

+0

@Danuka Warum sollte es nicht? –

+1

Beantwortung meiner eigenen Frage, nun sollte es funktionieren, wenn die Verschlüsselung in beiden Servern getrennt erfolgt. Das Szenario kam mir in den Sinn, dass Sie die verschlüsselte Webconfig-Datei in Server A nicht für Server B verwenden können. – Dhanuka777

Verwandte Themen