Qual è il modo più sicuro per salvare la stringa di connessione nell'applicazione Windows Form?

2

Mi sono appena trovato in una nuova azienda in cui sviluppano applicazioni Windows Form utilizzando tecnologie .NET e VB.NET, naturalmente. Usano i database di SQL Server. Il problema GRANDE è che memorizzano il testo semplice di Connection String. Questo è ovviamente molto pericoloso. Becuase. L'applicazione .NET genera un file di impostazioni all'interno dell'applicazione e un utente può aprire quel file in Blocco note. Qual è la migliore pratica sicura per questo? Sì. Possiamo memorizzare la stringa di connessione all'interno del codice ma a volte la stringa di connessione potrebbe cambiare.

Grazie per l'aiuto.

    
posta NathanWay 25.11.2015 - 19:16
fonte

2 risposte

4

Hai un paio di opzioni.

Il primo, e preferito, sarebbe quello di stabilire un livello di servizi Web che l'applicazione chiama invece di andare direttamente al database. Questo, ovviamente, richiederà un po 'di tempo per essere costruito. Tuttavia vorrebbe dire che potresti mettere il tuo DB dietro un firewall che solo il livello dei servizi web potrebbe attraversare.

Il secondo sarebbe utilizzare crittografare la parte di accesso al database del file app.config. Maggiori informazioni qui: link

La terza opzione, che useresti in combinazione con le opzioni di cui sopra, sarebbe quella di rimuovere tutte le query sql dirette dall'app e sostituirle con chiamate ai proc memorizzati che richiedono un parametro token utente o utente. Quindi ogni proc controllerebbe che l'id / token fosse valido per la determinata azione prima di eseguirla. Allo stesso tempo dovresti cambiare i diritti del database in modo tale che solo i proc memorizzati possano essere eseguiti.

Una quarta opzione consiste nell'implementare SSPI in combinazione con gli utenti del server SQL nominati (sia la directory attiva che in altro modo). Ciò significherebbe aggiungere comunque molti utenti (o gruppi di utenti) al server del database. Il vantaggio è che si può controllare su base individuale chi ha i diritti per accedere al server DB E non si avrebbe un nome utente / password combo nel file app.config. Il rovescio della medaglia è che qualcuno deve mantenerlo.

* Tenere presente che anche se si utilizzano sezioni di configurazione crittografate, l'utente deve avere accesso alla chiave di decrittografia. Quindi l'unica cosa che fa veramente è proteggere la chiave da persone che potrebbero leggere il file app.config in chiaro. Un utente determinato con accesso al computer su cui è in esecuzione l'applicazione potrebbe ancora estrarre le informazioni sulla stringa di connessione dalla memoria del computer o decrittografare la sezione utilizzando mezzi alternativi.

    
risposta data 25.11.2015 - 20:33
fonte
0

Passaggio 1 (Obbligatorio): creare un nuovo utente per SQL Server con il set minimo di autorizzazioni necessarie per l'applicazione. Se questo nuovo utente è un accesso di SQL Server o un utente di dominio Windows, dipenderà dall'opzione scelta di seguito.

Opzione più semplice: il nuovo utente creato nel passaggio 1 può essere un account di accesso di SQL Server. Criptare le parti protette del file di configurazione che contengono le credenziali. (ad esempio la stringa di connessione.)

Opzione migliore: il nuovo utente che crei nel passaggio 1 è un utente di Windows e assegni le autorizzazioni per quell'utente a SQL Server utilizzando l'autenticazione di Windows. Ora ogni macchina da dove viene eseguita l'applicazione può essere configurata per eseguire l'applicazione come nuovo utente. (Ci sono vari modi per farlo). Nel file di configurazione ora puoi utilizzare Integrated Security per la connessione a SQL Server, il che significa che non devi crittografarlo poiché non verrà visualizzato nulla di sicuro.

Nota: queste opzioni presuppongono che l'applicazione WinForms sia in esecuzione solo su una rete aziendale interna.

    
risposta data 25.11.2015 - 20:41
fonte

Leggi altre domande sui tag