Ho difficoltà con una vecchia applicazione scritta per Windows e con un approccio a 2 livelli, il che significa che il SW client si collega direttamente al database di back-end.
Ovviamente ciò significa che il SW client ha bisogno di un nome utente e una password per poter aprire la connessione al database. Tutti questi sono configurati e memorizzati nei registri di Windows. Le credenziali attualmente archiviate sono crittografate usando la chiave simmetrica che è codificata insieme al vettore iniziale nel codice.
Inoltre, il SW client è distribuito con la configurazione in altri posti.
Dal mio punto di vista questo approccio non è corretto in quanto le credenziali possono essere recuperate quando si ha accesso al sistema. Capisco che dovrebbe essere in qualche modo crittografato, quindi non è distribuito in testo chiaro, ma comunque ...
Sto pensando e sto cercando di trovare la soluzione giusta per proteggere la password e l'accesso al database e finisco sempre con il cambio di architettura da 2 a 3 livelli, in cui il server di backend pubblicherà API, avere una gestione degli utenti e solo l'applicazione di back-end del server avrà un accesso diretto al database installato su di esso.
Pensi che possa avere una soluzione migliore? In una configurazione corrente penso di poter proteggere le credenziali solo usando la crittografia o l'offuscamento per rendere più difficile per il potenziale aggressore recuperarlo. Per qualcuno con la conoscenza del SW sarà facile ottenerlo.