2011-08-18 25 views
6

¿Cómo puedo asegurar mi ConnectionString en la aplicación WinForm?Secure ConnectionString en aplicaciones WinForm

+0

Esto se puede usar por completo usando el código C# encripte la sección del hueco [link] (http://stackoverflow.com/questions/37573551/encrypt-app-config-custom-element-using-cmd?answertab=active#tab -top) –

Respuesta

18

No puede. Aunque puede encriptar la cadena de conexión en el archivo app.config, la aplicación necesita poder descifrarlo y, por lo tanto, siempre es posible recuperar la cadena de conexión desencriptada, especialmente con una aplicación administrada (tal vez no para su usuario final típico). pero cualquier desarrollador experto puede hacer esto).

La solución a esto es no apoyarse en security by obscurity. Use Seguridad integrada de Windows al conectarse a la base de datos utilizando la cuenta de usuario de Windows y otorgue al usuario la cantidad mínima de derechos en la base de datos.

A menudo, sin embargo, esto no es suficiente, porque es muy difícil asegurar la base de datos lo suficiente cuando los usuarios finales se conectan directamente a la base de datos (a menudo porque necesita seguridad a nivel de fila). Para que esto funcione, debe denegar el acceso a las tablas y vistas y recurrir por completo a los procedimientos almacenados.

Un mejor enfoque, sin embargo, es evitar que la aplicación de escritorio se comunique directamente con la base de datos; utiliza un servicio web como capa intermedia. En ese caso, usted tiene control total sobre la seguridad y puede almacenar la cadena de conexión de forma segura en el servidor (web).

+3

+1 para "No puedes". No hay seguridad absoluta especialmente con aplicaciones administradas. Puede hacer cumplir la seguridad con algunas cosas como incluir una capa de servicio web y aislar usuarios de la base de datos, pero aún así no será perfecto. Debe tener esto en cuenta desde el momento en que se crea la aplicación. –

+0

@Steven el enlace a "Seguridad integrada de Windows" está roto. :) –

0

Esto se le pide mucho en aquí ...

Encrypting sections and-or settings in an App.config file that will be redistributed

Nunca parece ser una respuesta finita en él ... Parece que es uno de los que "cada uno para sus propios "tipos de escenarios ... usa lo que mejor se adapte a tu situación.

+0

Las respuestas son muy finitas, su comentario peligroso en forma de respuesta es engañoso. – MickLH

+0

Eh, como todo lo cifrado, es el trabajo del propietario cambiar periódicamente la "clave privada" para evitar el descifrado por piratería. el tiempo en que encriptas toda la configuración o solo una parte es lo que está "a la elección", por lo tanto no es finito, pero tal vez finito no era la elección correcta de la palabra, tal vez "específico correcto" sería mejor. – War

+0

No entendió el punto, el hecho es que encriptar la configuración es una idea equivocada; en su lugar, debe proporcionar una interfaz segura a los datos confidenciales, ya que una aplicación siempre _deberá_ descifrar su configuración en tiempo de ejecución para que sea útil. – MickLH