Estoy luchando con una aplicación un poco antigua que está escrita para Windows y tiene un enfoque de 2 capas, lo que significa que el software del cliente se está conectando a la base de datos de back-end directamente.
Por supuesto, esto significa que el software del cliente necesita un nombre de usuario y contraseña para poder abrir la conexión a la base de datos. Todos estos están configurados y almacenados en los registros de Windows. Las credenciales almacenadas actualmente se encriptan usando una clave simétrica que está codificada en conjunto junto con el vector inicial en el código.
Además, el software del cliente se distribuye con configuración a otros lugares.
Desde mi punto de vista, este enfoque no es correcto, ya que las credenciales se pueden recuperar cuando se tiene acceso al sistema. Entiendo que debería estar encriptado de alguna manera para que no se distribuya en texto claro, pero aún así ...
Estoy pensando y tratando de encontrar la solución correcta para proteger la contraseña y el acceso a la base de datos y siempre termino con el cambio de arquitectura de 2 capas a 3 capas, donde el servidor backend publicará la API, tengo una administración de usuarios , y solo la aplicación backend del servidor tendrá acceso directo a la base de datos instalada en ella.
¿Crees que puede tener una mejor solución? En una configuración actual, creo que solo puedo proteger las credenciales mediante cifrado u ofuscación para dificultar la recuperación del posible atacante. Para alguien con el conocimiento del SW será fácil conseguirlo.