Sicurezza

lunedì 20 aprile 2009 - 08.36

pigi78 Profilo | Newbie

Ciao a tutti.

Ho un'applicazione che deve accedere ad un DB. Il .NET (o meglio Visual Studio) inserisce la stringa di connessione in un file "esterno" chiamato <mia_applicazione>.exe.config

Questo mi sta benissimo perchè così se ho due clienti non devo modificare/ricompilare il codice per inserire le credenziali di accesso.

Si apre però un problema di fondo: sui PC del cliente la stringa di connessione è memorizzata in modo "chiaro" all'interno di un file di testo.

Dal punto di vista "sicurezza" non è il massimo!

Stavo cercando altre soluzioni e, a parte l'utilizzo del registro di sistema (che è un po' più nascosto, però sempre "visibile") non ho tante alternative se non quella di usare un file cryptato.

Mi sembra però strano che il .NET, così attento alla sicurezza, non abbia alcun metodo per memorizzare informazioni "sensibili" in modo abbastanza sicuro...


In generale, come si gestisce la sicurezza in questi casi?

Grazie mille

sanbiz Profilo | Senior Member

>Si apre però un problema di fondo: sui PC del cliente la stringa
>di connessione è memorizzata in modo "chiaro" all'interno di
>un file di testo.
>Dal punto di vista "sicurezza" non è il massimo!

Beh si parla proprio di file di testo per accrescerne la flessibilità e rendere molto semplice operazioni semplici, come la stringa di connessione.

Il file .config non dovrebbe contenere informazioni sensibili quali password d'accesso, ma solo stringhe di connessione, impostazioni utente quali colori di sfondo, timeout applicazione ecc ecc.

La sicurezza la ottieni distinguendo la parte client da quella server: il tuo problema è l'accesso al database? Ok, intendi un DB SQL ad esempio?
Se così fosse sarà il server a dover implementare una policy appropriata e quindi impedire accessi non appropriati.

Se proprio hai la necessità di memorizzare la password, evitando di digitarla in fase di connessione, dovrai utilizzare, almeno, un algoritmo di criptazione, ma qui si esula dalla semplicità del file .config.
Prova a pensare: per cambiare la stringa di connessione nel file .config ti bastano pochi secondi. Se solo decidessi di scrivere la password nel registry ci vorrebbe già molto più tempo (e sarebbe anche scomodo)... inoltre, nel registy, non vorresti scrivere la password criptata? E qui torni al punto di criptare la tua password.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

freeteo Profilo | Guru

Ciao,
la Microsoft ha pensato a questa problematica, ed ha proposto una soluzione gia' integrata:
http://msdn.microsoft.com/it-it/library/53tyfkaw.aspx

Oltre a questa ovviamente puoi pensare a farti tu una criptazione in lettura e scrittura in quello che scrivi nel config,ma spesso il fatto di mettere una criptazione, a mio avviso, e' pensata per evitare che chiunque facilmente possa accederci, quindi qualcosa di integrato ti semplifica il lavoro...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5