c# - Cifrar contraseña en App.config
entity-framework ado.net (3)
Quiero cifrar la contraseña en la cadena de conexión. Cuando hago una conexión a DB, la cadena de conexión se almacena abiertamente en App.config y necesito encontrar una forma de mantener solo la contraseña cifrada.
Digamos que esta es su cadena de conexión:
<connectionStrings>
<add name="cs" connectionString="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=XXSDFASFDKSFJDKLJFDWERIODFSDFHSDJHKJNFJKSD;"/>
</connectionStrings>
Entonces puedes hacer algo como esto:
string myCs = System.Configuration.ConfigurationManager.ConnectionStrings["cs"].ConnectionString;
System.Data.SqlClient.SqlConnectionStringBuilder csb = new System.Data.SqlClient.SqlConnectionStringBuilder(myCs);
csb.Password = EncDecHelper.Decrypt(csb.Password);
myCs = csb.ToString();
Puede escribir EncDecHelper.Decrypt
utilizando ejemplos de aquí: Encriptar y descifrar una cadena
Tal vez descifre la cadena de conexión de su configuración antes de cargar la aplicación.
Use la sección de configuración de connectionStrings
y cifre toda la sección, en lugar de solo la contraseña.
Esto es más seguro ya que la configuración de la aplicación ya no tendrá los nombres de servidor y de usuario en texto plano.
Hay documentos de procedimientos para cifrar las secciones de configuración en MSDN para RSA o DPAPI .