2010-03-04 17 views

Respuesta

3

La manera más segura (suponiendo que los clientes de Windows y un servidor de base de datos compatible) es utilizar integrated authentication, y evitar la distribución de contraseñas con las cadenas de conexión en absoluto.

 
Data Source=servername;Initial Catalog=dbname;Integrated Security=SSPI; 

Cada usuario necesitará acceder al servidor de la base de datos. Descubrí que la manera más fácil de hacerlo es con grupos de directorios activos: otorgar al grupo el acceso apropiado en el servidor de la base de datos y agregar y eliminar usuarios de ese grupo según sea necesario.

3

Cifrelo, ya sea manualmente o utilizando la herramienta de configuración distribuida con EntLib.

this should get you started.

Editar: por supuesto, como otros han dicho, el uso integrado de seguridad es la mejor opción, pero entiendo que hay momentos en que esto no es una opción.

En estos casos, tendrá que hacer un poco de trabajo extra. Lo he hecho antes y sé que funciona. Voy a vincular a un artículo que describe los desafíos y, en última instancia, la solución de trabajo para hacer esto con las aplicaciones de Windows.

advertencia: póngase gafas de sol antes de hacer clic en este enlace.

http://guy.dotnet-expertise.com/PermaLink,guid,b3850894-3a8e-4b0a-aa52-5fa1d1216377.aspx

+0

Utilizo este método para mis aplicaciones web, pero ¿cómo funciona el cifrado de la cadena de conexión con una aplicación de Windows implementada? El archivo de claves utilizado para encriptar la conexión será necesario implementar con la aplicación para descifrar la conexión. Lo que significa que cualquiera podría descifrarlo? –

+0

@Bruce: ¿desplegado, te refieres en general, en la naturaleza? –

+0

Sí. Diga una aplicación con una base de datos Sqlce. –

0

Realmente depende de cómo se espera que alguien consiga en la cadena de conexión. Si te preocupan solo los usuarios de tu aplicación (que no son desarrolladores) simplemente encripta la cadena de conexión y pon la cadena cifrada en una constante en tu aplicación. Use la clave en tiempo de ejecución para descifrar la cadena cifrada que utilizó para la constante y luego ofusque su código antes de implementarlo. ¿Es esto tonto? Por supuesto que no, pero probablemente evitará que el 99.9% de las personas obtengan la cadena de conexión. Tendrían que desensamblar su código y obtener primero la cadena encriptada y luego tendrían que tener acceso a la clave. Si le preocupan los desarrolladores, la solución anterior funcionaría siempre que no tengan acceso al código fuente en producción y posiblemente a la clave utilizada para encriptar la cadena de conexión. Seguro que alguien tiene que poner la información de conexión pero solo le da acceso a esa persona. Espero que esto ayude.

Cuestiones relacionadas