Me gustaría señalar que la respuesta a la segunda parte de la pregunta tiene poco que ver con la primera parte.
Incluso si la contraseña se almacenó de forma cifrada y muy sólida (no lo es), esto no sería seguro, en varios aspectos.
- El usuario tiene acceso completo y sin restricciones a la base de datos. Es decir. puede hacer lo que quiera (según los permisos del usuario compartido ... Los privilegios del usuario están restringidos en la base de datos, ¿correcto ?). P.ej. accediendo a datos no autorizados, eliminando datos de otros usuarios, insertando basura, etc.
- Esto parece que hay una cuenta de usuario compartida, que todos los usuarios se han conectado a su conexión ODBC ... Lo que significa que el servidor de la base de datos no tiene forma de limitar el acceso de los usuarios, segregar sus datos, rastrear quién hizo qué. etc.
- En cualquier caso, la contraseña ODBC deberá descifrarse en la memoria , lo que permitirá al usuario capturarla, y luego hacerse pasar por la aplicación y, nuevamente, hacer lo que quiera.
Estaría mucho mejor rediseñando la aplicación, con un nivel intermedio y todo ...
Siempre me resulta extraño discutir security
y MS Access
en la misma conversación ...
Si absolutamente no cambia la arquitectura, considere usar la autenticación integrada de Windows y vincular las cuentas de usuario (o grupo) a un rol de db para la administración. De esa forma, al menos cada usuario tendrá su propia cuenta en el servidor, puede restringir el acceso (según el principio de privilegio mínimo), no tener cuentas compartidas y puede realizar un seguimiento de las acciones de cada usuario en la base de datos.