.NET For Your Information

Un blog más sobre tecnología .NET

Encriptar ConnectionString con Enterprise Library

with 6 comments


La cadena de conexión o connection string es parte importante de toda aplicación, dado que mediante ésta se logra la comunicación entre la base de datos y los métodos de acceso a datos de la aplicación.

Sin embargo, más allá de su concepto, deberíamos tener varias consideraciones al momento de su creación, debido a que se podrían exponer datos confidenciales que servirían de información para usuarios malintencionados o hackers que quieran atacar a nuestra aplicación.

Basándonos en el ejemplo del post de “Desarrollo de Aplicación en Capas con Visual Studio 2008“, nos damos cuenta que una de las posibles formas de utilizar el ConnectionString es en el código que forma nuestros métodos de acceso a datos. Tal y como lo mencioné en dicho post, esa no es la forma más adecuada de llevar a cabo esta tarea.

Una de las buenas prácticas es almacenar el ConnectionString en un archivo “App.config” (en aplicaciones cliente/servidor) o “Web.config” (en aplicaciones web) que forme parte de nuestra solución. En caso de que se esté programando en capas, dicho archivo de configuración deberá estar en el proyecto más externo, por lo general, en el proyecto de “Presentación”, a pesar de que luego se utilice en los métodos de acceso a datos. Esto facilitará la interacción con dicha cadena de conexión, dado que posteriormente podremos invocarla desde cualquier parte del código sin tener que reescribirla.

Sin embargo, esto no elimina el problema de exposición de datos confidenciales, para lo cual usaremos el Data Access Application Block del Enterprise Library v4.1, el cual forma parte de Microsoft Patterns & Practices y puede ser descargado de manera gratuita, y luego de su instalación podrá ser usado como una extensión más de Visual Studio.

Para lograr encriptar nuestra ConnectionString debemos seguir esta serie de pasos:

1) Añadir el archivo “App.config” o “Web.config” al proyecto de “Presentación”.

2) Hacer click derecho sobre el “App.config”, y luego en “Edit Enterprise Library Configuration”.

EditEnterpriseLibrary

3) Agregamos el Data Access Application Block.

Agregar Data Access

4) Agregar sección de Connection String.

Agregar seccion ConnString

5) Agregar nueva ConnectionString.

Agregar connectionString

6) Seleccionamos el nombre del ConnectionString.

nombre ConnectionString

7) Modificar las propiedades del ConnectionString.

propiedadesConnString

8 ) Hacemos click en Data Access Application Block y, en el cuadro de Propiedades, en la sección Protection, en ProtectionProvider seleccionamos: RsaProtectedConfigurationProvider.

ProtectionProvider

Por último, guardamos los cambios realizados al archivo “App.config” o “Web.config”, lo cerramos, y volvemos a abrir de manera tradicional (en xml) y veremos los cambios realizados: almacenada y encriptada la ConnectionString.

connString encriptada

Para terminar, luego podremos hacer uso de dicho ConnectionString de la siguiente manera:

cSharp_EntLib

De esta manera, terminamos usando un alias, denominado “prueba” en este caso, que no otorga ningún tipo de información relevante a un posible hacker, al tiempo que encriptamos la cadena de conexión en el archivo que la aloja.

De nuevo, sus comentarios serán bienvenidos.

Anuncios

6 comentarios

Subscribe to comments with RSS.

  1. […] no es la manera más adecuada de hacer uso de ella, sin embargo, este tema quedará para un futuro post. La forma más fácil de generar una cadena de conexión es haciendo uso del Server Explorer y del […]

  2. […] uso del Enterprise Library, específicamente del Data Access Application Block, el cual es capaz de encriptar dicha cadena de conexión y almacenarla en el app.config o web.config, según sea el […]

  3. A mi me parace una buena solucion he usado metodos de encriptacion asimetricos y los resultados son cadenas mas complicadas pero el llevarlas acabo tambien, para solo encriptar una cadena me parece demasiado

    Octavio

    2 febrero 2011 at 8:00 PM

  4. Hola! Muy bueno el artículo, pero quisiera saber cómo implementar eso mismo en caso que quiera dejar mi ejecutable en un servidor y que las otras máquinas lo accedan por medio de un acceso directo. Con ´la técnica mencionada al ejecutar el programa en otra máquina dice que hay problema con el proveedor RSA con la clave de encriptación, si me pudieran ayudar se los agradecería!

    Horacio

    4 abril 2011 at 8:27 AM

  5. Saludos Amigo
    una consulta si quiero cambiar la cadena de servidor como seria???

    Carlos Espinoza

    3 enero 2012 at 3:10 PM

  6. […] cliente tuve que encriptar el connnectionstring del archivo .config, siguiendo los pasos del link https://dotnetfyi.wordpress.com/2009/…prise-library/ Pude hacerlo, sin embargo luego de instalar la aplicación, al ejecutarla aparece el error | […]


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: