none
encriptar cadena conexión app.config vb.net

    Pregunta

  • encriptar cadena conexión app.config vb.net

    Ventajas:

    gracias a ustedes ya tengo mi cadena de conexión hecha en App.Config

    Si la cadena de conexión está ubicada en un módulo y cambia en algún momento, será necesario compilar de nuevo la aplicación ya que ya no tiene acceso a ella desde fuera del proyecto. Imagina que la aplicación está instalada en 15 computadoras. tendría que compilar y volver a instalar en todas las computadoras, por esto se recomienda almacenar las cadenas de conexión en un archivo de configuración de la aplicación.

    Desventajas:

    Qué pasaría si, entregamos al cliente nuestro sistema final y una persona cualquiera quiere ingresar a nuestro sistema sin autorización pues lo lograría simplemente abriendo la cadena de conexión y podría manipular la base de datos de nuestro sistema ya que en ella se encuentran los datos como el nombre de la instancia, el usuario, la contraseña y otros datos importantes de nuestra base de datos.

    La gran pregunta:

    ¿Existe una forma de encriptar la cadena conexión app config?

    Gracias de antemano. 

    lunes, 9 de enero de 2017 20:33

Respuestas

  • Busca un poco hacia atrás en los foros, que hace muy poco ha habido precisamente un hilo sobre este tema y se ha hablado sobre cómo cifrar la cadena.

    Pero advierto que no es suficientemente seguro ante un atacante con mínimos conocimientos. Aunque la cadena esté encriptada en el .config, el programa necesariamente debe disponer por dentro del algoritmo y las claves necesarias para desencriptarla (sino no podría usarla). En consecuencia, basta descompilar el programa o rodarlo bajo un depurador para tomar la cadena una vez que el programa la ha desencriptado.

    La única solución completamente segura pasa por asignar distintas credenciales de base de datos a cada usuario (idealmente con autenticación integrada en lugar de login y password, si es que se puede), y controlar los permisos del usuario a nivel de la propia base de datos (y no en la aplicación cliente).

    • Marcado como respuesta EliannyRD martes, 10 de enero de 2017 21:15
    lunes, 9 de enero de 2017 21:09
  • Buenas tardes amigo, podes probar con esto. El codigo esta en C#, puede traducir a vb.net 

    https://social.msdn.microsoft.com/Forums/es-ES/ed0e847b-94b2-446f-a8ec-6a25f26794f3/cadena-de-conexion-en-appconfig?forum=vcses

    _________________________________________________________________________________________
    OBS: Favor vota si te es útil la información.
    Saludos 
    Bader Molinas - Paraguay 
    https://deveintel.wordpress.com/

    Puedes descargar de acá para convertir de c# a vb.net  http://fishcodelib.com/Convert.htm
    • Editado Bader Molinas martes, 10 de enero de 2017 19:29
    • Marcado como respuesta EliannyRD martes, 10 de enero de 2017 21:15
    martes, 10 de enero de 2017 19:23

Todas las respuestas

  • Busca un poco hacia atrás en los foros, que hace muy poco ha habido precisamente un hilo sobre este tema y se ha hablado sobre cómo cifrar la cadena.

    Pero advierto que no es suficientemente seguro ante un atacante con mínimos conocimientos. Aunque la cadena esté encriptada en el .config, el programa necesariamente debe disponer por dentro del algoritmo y las claves necesarias para desencriptarla (sino no podría usarla). En consecuencia, basta descompilar el programa o rodarlo bajo un depurador para tomar la cadena una vez que el programa la ha desencriptado.

    La única solución completamente segura pasa por asignar distintas credenciales de base de datos a cada usuario (idealmente con autenticación integrada en lugar de login y password, si es que se puede), y controlar los permisos del usuario a nivel de la propia base de datos (y no en la aplicación cliente).

    • Marcado como respuesta EliannyRD martes, 10 de enero de 2017 21:15
    lunes, 9 de enero de 2017 21:09
  • Gracias por contestar.

    Actualmente esta es mi cadena de conexión App.Config y funciona bien.

    <connectionStrings>
            <add name="ConString" 
                 connectionString="Data Source=DESKTOP-LJRIODK;Initial Catalog=DbSistemaFactura;User ID=saAdmin;Password=CECOMCE"
                providerName="System.Data.SqlClient" />
        </connectionStrings>

    Intento hacer lo siguiente:

    Estas variables Publica las tengo declarada de un Módulo...

    Public Contrasena As String = "CECOMCE"
        Public NombreBaseDatos As String = "DbSistemaFactura"

    yo Realmente no se si se puede hacer esto que estoy intentado hacer. 

    que cadena de conexión App.Config salga asi. 

    <connectionStrings>
            <add name="ConString" 
                 connectionString="Data Source=DESKTOP-LJRIODK;Initial Catalog=NombreBaseDatos;User ID=saAdmin;Password=Contrasena"
                providerName="System.Data.SqlClient" />
        </connectionStrings>

    y asi por lo menos proteger un poco el nombre de la base de datos y la contraseña, pero de esta manera la cadena de conexion da errores. 

    por favor........................ quiero que alguien me una ayuda con mi teoría, si es que puede funcionar. 

    martes, 10 de enero de 2017 19:14
  • Buenas tardes amigo, podes probar con esto. El codigo esta en C#, puede traducir a vb.net 

    https://social.msdn.microsoft.com/Forums/es-ES/ed0e847b-94b2-446f-a8ec-6a25f26794f3/cadena-de-conexion-en-appconfig?forum=vcses

    _________________________________________________________________________________________
    OBS: Favor vota si te es útil la información.
    Saludos 
    Bader Molinas - Paraguay 
    https://deveintel.wordpress.com/

    Puedes descargar de acá para convertir de c# a vb.net  http://fishcodelib.com/Convert.htm
    • Editado Bader Molinas martes, 10 de enero de 2017 19:29
    • Marcado como respuesta EliannyRD martes, 10 de enero de 2017 21:15
    martes, 10 de enero de 2017 19:23
  • Gracias por responder.

    Por el momento voy a dejar la cadena de conexión así: vulnerable, realmente no entiendo el procedimiento, pero gracias de todos modos. 

    martes, 10 de enero de 2017 21:15