Privacy e sicurezza dei dati

La salvaguardia e la gestione di informazioni sensibili nelle applicazioni ADO.NET dipendono dai prodotti e dalle tecnologie sottostanti usati 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 usate 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. L'argomento Servizi di crittografia offre una panoramica della crittografia in .NET Framework, descrive come viene implementata la crittografia e come è possibile eseguire attività di crittografia specifiche.

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. Verifica dell'integrità dei dati con i 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 da raggiungere 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 usata anche per crittografare sezioni dei file di configurazione nelle applicazioni Windows. Per altre informazioni, vedere Protezione delle informazioni di connessione.

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'uso 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 usare le classi String e StringBuilder se i dati sono realmente sensibili.

La classe SecureString fornisce metodi per crittografare testo usando 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 usare i vari metodi della classe per gestire la stringa.

Vedi anche