Laden...

Web.config und ConnectionString Verschlüsselung

Erstellt von Mary81 vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.202 Views
M
Mary81 Themenstarter:in
87 Beiträge seit 2008
vor 6 Jahren
Web.config und ConnectionString Verschlüsselung

Hallo,

Ich möchte gerne das Password zur der DB verschlüsseln.

Web.config:


 <connectionStrings>
    <add name="TEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tedb;initial catalog=DaTa;user id=sa;password=NxBYQy0fQ+1Pys0DF64t/w==;MultipleActiveResultSets=True;App=EntityFramework&quot;"
      providerName="System.Data.EntityClient" />
  </connectionStrings>

wenn ich die Daten aus der DB auslese (Entity Framework 6) ...


using (TEntitiesdb = new TEntities())
{
... Daten aus db hollen
}

In der ...


public partial class TEntities : DbContextpublic TEntities()
            : base("name=TEntities")
{
PasswordEncrypting();
}


public void PasswordEncrypting()
        {
            System.Configuration.Configuration rootWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
            System.Configuration.ConnectionStringSettings connString;
            if (0 < rootWebConfig.ConnectionStrings.ConnectionStrings.Count)
            {
                connString = rootWebConfig.ConnectionStrings.ConnectionStrings["TEntities"];
                if (null != connString)
                {
                    var password = connString.ConnectionString.Substring(connString.ConnectionString.IndexOf(";password=") + 10, connString.ConnectionString.Substring(204 + 10).IndexOf(";"));

                    var testDecr = Decrypt(password, "test");
                    var neuesConnString = connString.ConnectionString.Replace(";password=" + password + ";", ";password=" + testDecr + ";");
                    connString.ConnectionString = neuesConnString;
                    
                    rootWebConfig.Save();
                }
            }
        }

Es funktioniert soweit auch alles, nur nicht 100% so wie ich es brauche.

Durch das rootWebConfig.Save(); wird die Web.config überschrieben und das Password steht wieder unverschlüsselt da. Wie muss ich das machen, damit das Password unverschlüsselt zur Verfügung stehen oder das ich die Web.config überschreiben muss??

Vielen Dank

2.207 Beiträge seit 2011
vor 6 Jahren

Hallo Mary81,

hast du [FAQ] DB-Password/Kennwort/Connection-String sicher speichern mal durchgelesen?

Gruss

Coffeebean

M
177 Beiträge seit 2009
vor 6 Jahren

Eine Frage dazu:

Würde etwas dagegen sprechen wenn man einen eigenen Windows-Account anlegt, der von der WebApp verwendet wird (AppDomain im IIS) und dieser gegen die DB fährt? Setzt natürlich vorraus, dass der AppDomain Prozess Zugriffsrechte auf die DB hat.

16.806 Beiträge seit 2008
vor 6 Jahren

In ASP.NET MVC (4) lohnt es sich gar nicht so selten, selbst was sicheres zu basteln oder zu verwenden.
In ASP.NET Core bitte die UserSecrets verwenden.

Wenn man in Azure unterwegs ist, in beiden Fällen bitte Key Vault verwenden.