Share via


Protezione delle informazioni di connessione (ADO.NET)

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. Se le informazioni di connessione vengono archiviate in testo normale o mantenute nella memoria, si rischia di compromettere l'intero sistema. Le stringhe di connessione incorporate nel codice sorgente possono essere lette tramite Ildasm.exe (disassemblatore MSIL) per visualizzare il linguaggio MISL (Microsoft Intermediate Language Microsoft) in un assembly compilato.

Le vulnerabilità di sicurezza che riguardano le stringhe di connessione possono presentarsi in base al tipo di autenticazione utilizzato, alla modalità con cui le stringhe di connessione vengono mantenute nella memoria e su disco e alle tecniche utilizzate per crearle in fase di esecuzione.

Utilizzo dell'autenticazione di Windows

Per limitare l'accesso all'origine dati, è necessario proteggere le informazioni di connessione quali, ad esempio, identificatore utente, password e nome dell'origine dati. Per evitare di esporre informazioni utente, si consiglia di utilizzare l'autenticazione di Windows (definita anche sicurezza integrata) laddove possibile. L'autenticazione di Windows viene specificata in una stringa di connessione utilizzando le parole chiave Integrated Security o Trusted_Connection, eliminando la necessità di utilizzare un ID utente e una password. Tramite l'autenticazione di Windows, gli utenti vengono autenticati da Windows e l'accesso alle risorse di server e database viene determinato concedendo autorizzazioni a utenti e gruppi di Windows.

Nei casi in cui non sia possibile utilizzare l'autenticazione di Windows, è necessario prestare una maggiore attenzione perché le credenziali utente sono esposte nella stringa di connessione. Nelle applicazioni ASP.NET è possibile configurare un account di Windows come identità fissa utilizzata per le connessioni a database e ad altre risorse di rete. La rappresentazione viene abilitata nell'elemento identità nel file web.config e vengono specificati un nome utente e una password.

<identity impersonate="true" 
        userName="MyDomain\UserAccount" 
        password="*****" />

L'account con identità fissa deve avere privilegi limitati che includono solo le autorizzazioni necessarie nel database. È inoltre necessario crittografare il file di configurazione in modo da non esporre il nome utente e la password in testo non crittografato.

Evitare di archiviare le stringhe di connessione per OleDbConnection in un file di collegamento dati universale (UDL). I file UDL vengono archiviati in testo non crittografato e non possono essere crittografati. Poiché per l'applicazione si tratta di una risorsa esterna basata su file, un file UDL non può essere protetto né crittografato tramite .NET Framework.

Evitare attacchi injection con i compilatori di stringhe di connessione

Un attacco injection delle stringhe di connessione può verificarsi quando si utilizza la concatenazione dinamica di stringhe per compilare stringhe di connessione basate sull'input dell'utente. Se l'input dell'utente non viene convalidato e il testo o i caratteri dannosi non vengono convertiti in caratteri di escape, un utente non autorizzato potrebbe accedere a dati sensibili o ad altre risorse del server. Per risolvere questo problema, in ADO.NET 2.0 sono state introdotte nuove classi di compilatori di stringhe di connessione per convalidare la sintassi delle stringhe e assicurarsi che non vengano inseriti parametri aggiuntivi. Per ulteriori informazioni, vedere Compilatori di stringhe di connessione (ADO.NET).

Utilizzare Persist Security Info=False

Il valore predefinito per Persist Security Info è false; si consiglia di utilizzare questo valore in tutte le stringhe di connessione. Se si imposta Persist Security Info su true o yes, è possibile che da una connessione aperta si ottengano informazioni sensibili, tra cui l'ID utente e la password. Se si imposta Persist Security Info su false o no, le informazioni di sicurezza vengono eliminate dopo essere state utilizzate per aprire la connessione. In questo modo un'origine non attendibile non ha accesso alle informazioni sensibili per la sicurezza.

Crittografare i file di configurazione

È anche possibile archiviare le stringhe di connessione in file di configurazione, eliminando la necessità di incorporarle nel codice dell'applicazione. I file di configurazione sono file XML standard per i quali in .NET Framework è stato definito un set comune di elementi. Le stringhe di connessione nei file di configurazione vengono in genere archiviate all'interno dell'elemento <connectionStrings> in app.config per le applicazioni Windows o nel file web.config per le applicazioni ASP.NET. Per ulteriori informazioni sull'archiviazione, il recupero e la crittografia di stringhe di connessione dai file di configurazione, vedere Stringhe di connessione e file di configurazione (ADO.NET).

Vedere anche

Altre risorse

Protezione di applicazioni ADO.NET

Crittografia delle informazioni di configurazione tramite la configurazione protetta

Sicurezza nel codice nativo e nel codice .NET Framework