Privacy e sicurezza dei dati (ADO.NET)
La salvaguardia e la gestione di informazioni sensibili nelle applicazioni ADO.NET dipendono dai prodotti e dalle tecnologie sottostanti utilizzati per crearle. ADO.NET non fornisce direttamente servizi per la protezione o la crittografia dei dati.
Crittografia e codici hash
In .NET Framework le classi nello spazio dei nomi System.Security.Cryptography possono essere utilizzate dalle applicazioni ADO.NET per impedire che i dati vengano letti o modificati da terze parti non autorizzate. In alcuni casi si tratta di wrapper presenti nelle CryptoAPI di Microsoft non gestite, in altri semplicemente di implementazioni gestite. Nell'argomento Cryptographic Services viene fornita una panoramica della crittografia in .NET Framework, viene descritta la modalità di implementazione della crittografia e viene illustrato come eseguire specifiche attività di crittografia.
Diversamente dalla crittografia, che consente di crittografare i dati e di decrittografarli in un secondo momento, l'hash dei dati è un processo irreversibile. Risulta utile quando si desidera impedire la manomissione dei dati verificando che non siano stati alterati. Con stringhe di input identiche, gli algoritmi di hash producono sempre valori di output brevi facilmente confrontabili. Integrità dei dati con codici hash descrive come generare e verificare i valori hash.
Crittografia dei file di configurazione
La protezione dell'accesso all'origine dati è uno dei principali obiettivi perseguiti quando si imposta la sicurezza di un'applicazione. Una stringa di connessione presenta una potenziale vulnerabilità se non è protetta. Le stringhe di connessione salvate nei file di configurazione vengono archiviate in file XML standard per i quali in .NET Framework è stato definito un set comune di elementi. La configurazione protetta consente di crittografare informazioni sensibili in un file di configurazione. Sebbene sia stata progettata principalmente per applicazioni ASP.NET, questa funzionalità può essere utilizzata anche per crittografare sezioni dei file di configurazione nelle applicazioni Windows. Per ulteriori informazioni, vedere Protezione delle informazioni di connessione (ADO.NET).
Protezione di valori stringa in memoria
Se un oggetto String contiene informazioni sensibili, ad esempio password, numeri di carta di credito o dati personali, vi è il rischio che tali informazioni possano essere rivelate dopo l'utilizzo poiché i dati non vengono eliminati dalla memoria del computer.
L'oggetto String non è modificabile, ovvero una volta creato, non è possibile modificarne il valore. Le modifiche che apparentemente modificano il valore stinga in realtà creano una nuova istanza di un oggetto String in memoria, archiviando i dati come testo normale. Inoltre, non è possibile prevedere in quale momento le istanze della stringa verranno eliminate dalla memoria. Il recupero della memoria con le stringhe non è deterministico con Garbage Collection di .NET. È opportuno evitare di utilizzare le classi String e StringBuilder se i dati sono realmente sensibili.
La classe SecureString fornisce metodi per crittografare testo utilizzando l'API di protezione dei dati (DPAPI) in memoria. La stringa viene quindi eliminata dalla memoria quando non è più necessaria. Non è disponibile alcun metodo ToString per leggere rapidamente il contenuto di un oggetto SecureString. È possibile inizializzare una nuova istanza di SecureString senza valore o passando un puntatore a una matrice di oggetti Char. È quindi possibile utilizzare i vari metodi della classe per gestire la stringa. Per ulteriori informazioni, scaricare l'applicazione di esempio SecureString, che illustra come utilizzare la classe SecureString.