¿Una forma segura de guardar la cadena de conexión en .NET?

1

Estoy desarrollando una aplicación que no es estática para mí. Esto significa que crear un servicio web para mi conexión no funcionará, supongo.

Porque mi aplicación funciona un poco como Wordpress. Primero le dice a la aplicación su conexión de base de datos y luego la aplicación se conectará a la base de datos. Pero, ¿cómo puedo asegurar esta conexión?

Por ahora, guardé connectionString en app.config, lo cual también es un problema porque no puedo usar Settings.Default.Upgrade() cuando la nueva versión está fuera porque solo actualiza <userSettings> y no <connectionString> .

También traté de asegurar mi cadena de conexión con RSA, lo cual también es un problema, porque no puedo usar el mismo programa en otras PC (por ejemplo, usted tiene una empresa con dos empleados y ambos tienen que usar el programa y tener acceso) a la base de datos).

Nunca trabajé con un servicio web y supongo que no funcionará para mí porque la conexión a la base de datos es diferente para cada persona que usa la aplicación (como ocurre con Wordpress).

    
pregunta Luranis 23.10.2017 - 10:28
fuente

2 respuestas

1

Si tiene diferentes usuarios que se conectan directamente a la misma base de datos, la única forma de hacerlo seguro es asignarle a cada usuario una cuenta de base de datos diferente (/ contraseña) con derechos solo para acceder a sus datos, aunque es más fácil decirlo que hacerlo mientras manteniendo un diseño de base de datos sano.

Si cada usuario usa la misma cadena de conexión, esto significa que cualquiera puede sacar la cadena de conexión de la aplicación y ejecutar consultas directamente en la base de datos. Cualquier tipo de cifrado es inútil: si la aplicación puede acceder a ella en tiempo de ejecución, necesita la clave. Lo que significa que cualquier persona con acceso a los archivos de la aplicación también puede obtener la clave.

Una alternativa sería establecer la conexión a través de un servicio que los usuarios deben autenticar (generalmente con un nombre de usuario y contraseña). Puede hacer que almacenen su nombre de usuario / contraseña en la aplicación para que no tengan que proporcionarlos en cada lanzamiento o incluso que almacenen una cookie / token de autenticación una vez que se autentiquen correctamente. Normalmente estos días sería un servicio REST basado en HTTPS. La aplicación cliente envía la solicitud al servicio. Esto verifica que el usuario tiene permiso para realizar esa solicitud y se encarga de devolver la información. Esto viene con el beneficio adicional de que la base de datos puede ser desactivada mediante un servidor de seguridad.

    
respondido por el Hector 23.10.2017 - 13:01
fuente
0

Puede utilizar la API de protección de datos (DPAPI).

  1. Cifrado de cadenas usando DPAPI y métodos de extensión
  2. Cómo utilizar la protección de datos
  3. Descripción general de la configuración protegida
  

"Puede usar una configuración protegida para cifrar información confidencial,   incluyendo nombres de usuario y contraseñas, cadenas de conexión de base de datos y   claves de cifrado, en un archivo de configuración de la aplicación web como el   Archivo web.config. La información de configuración encriptada puede mejorar la   seguridad de su aplicación al dificultar la tarea de un atacante   acceder a la información sensible incluso si el atacante gana   acceso a su archivo de configuración ... "

    
respondido por el Gil 22.11.2017 - 12:57
fuente

Lea otras preguntas en las etiquetas