Tengo un escenario que me ha estado preocupando durante años. Si tiene que conectarse a una base de datos u otro servicio (como un servicio web) usando un nombre de usuario y contraseña, ¿cuál sería el lugar más seguro para almacenar esta información si se está conectando mediante un ensamblado .NET? Entiendo que tendrías que encriptar la contraseña, pero luego te toparías con una especie de problema de huevo de gallina. Bien, puedes encriptarlo, pero ¿dónde pones la llave?Dónde almacenar contraseñas de db cuando se usan aplicaciones de Windows .NET o ASP.NET
En .NET, no puede codificar la contraseña porque puede descompilar el código .NET.
Analicé el uso de derechos basados en ensamblaje con Almacenamiento aislado, pero MS recomienda no almacenar elementos secretos no encriptados allí porque los usuarios privilegiados pueden obtener acceso, así que, de nuevo, estamos trasladando el problema del punto A al punto B. Por ejemplo, un administrador de dominio sin necesidad de conocer la información en una base de datos podría obtener acceso debido a la capacidad de ser administrador en cualquier estación de trabajo del dominio.
Puede cifrar App.Config y Web.Config, pero creo que los usuarios de priveledges pueden acceder a las claves.
Creo que se encuentra con el mismo problema con DPAPI.
Consideré almacenar las contraseñas, cifrarlas en una base de datos remota y obtenerlas a través de la autenticación del sistema operativo, pero nuestro departamento prohíbe el almacenamiento de contraseñas en los servidores de la base de datos. Estoy bastante seguro de que estoy atascado y quería confirmación.
Sé que hace un tiempo, pero le he dado una respuesta a su pregunta sobre cómo almacenar las contraseñas encriptadas. Por favor échale un vistazo. – Matt