2012-01-06 20 views

Respuesta

7

No hay diferencia entre utilizar EF o cualquier otro ORM, puede usar la forma estándar de encriptar la conexión de cadena y descifrarla antes de llamar a la inicialización de EF. El contexto se producirá automáticamente.

+0

tnkx mucho por su ayuda y enlaces –

3

Puede detener las llamadas a la cadena de conexión de la clase de contexto (DBContext o IdentityDbContext si utilizando ASPNET Identidad) y modificar la conexión cuerda devuelta En mi caso, en lugar de encriptar toda la cadena de conexión, elegí encriptar solo la contraseña. Puede usar el mismo enfoque para encriptar toda la cadena de conexión.

Nota: La función (StringCipher.Decrypt) utiliza para cifrar y descifrar vino de este hilo ->https://stackoverflow.com/a/1344255/1390025

Aquí es donde se arresta a la llamada a la cadena de conexión

 public YourDB() 
     : base(GetSqlConnection("DefaultConnection")) 
    {} 

En lo anterior escenario Estoy obteniendo la cadena de conexión de app.config o web.config. Sin embargo, según su solicitud, puede encriptar toda la cadena de conexión y como en el siguiente ejemplo;

public YourDB() 
     : base(StringCipher.Decrypt("your-encrypted-connection-string", "passphrase-used-to-encrypt")) 
    {} 

En el escenario en el que sólo se encripta la contraseña, la función a continuación reemplaza la contraseña cifrada con texto sin formato y devuelve la cadena de conexión;

 public static string GetSqlConnection(string connectionStringName = "DefaultConnection") 
    { 
     // optionally defaults to "DefaultConnection" if no connection string name is inputted 
     string connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; 
     string passPhrase = "passphrase-used-to-encrypt"; 
     // decrypt password 
     string password = get_prase_after_word(connectionString, "password=", ";"); 
     connectionString = connectionString.Replace(password, StringCipher.Decrypt(password, passPhrase)); 
     return connectionString; 
    } 

La función que se utiliza para analizar la contraseña de la cadena de conexión

 public static string get_prase_after_word(string search_string_in, string word_before_in, string word_after_in) 
    { 
     int myStartPos = 0; 
     string myWorkString = ""; 

     // get position where phrase "word_before_in" ends 

     if (!string.IsNullOrEmpty(word_before_in)) 
     { 
      myStartPos = search_string_in.ToLower().IndexOf(word_before_in) + word_before_in.Length; 

      // extract remaining text 
      myWorkString = search_string_in.Substring(myStartPos, search_string_in.Length - myStartPos).Trim(); 

      if (!string.IsNullOrEmpty(word_after_in)) 
      { 
       // get position where phrase starts in the working string 
       myWorkString = myWorkString.Substring(0, myWorkString.IndexOf(word_after_in)).Trim(); 

      } 
     } 
     else 
     { 
      myWorkString = string.Empty; 
     } 
     return myWorkString.Trim(); 
    } 
Cuestiones relacionadas