Connessioni ADO.NET protette

Uno dei principali obiettivi della protezione di una applicazione consiste nel proteggere l'accesso all'origine dati. Per proteggere l'accesso all'origine dati è essenziale tenere riservate informazioni di connessione quali ID utente, password, nome dell'origine dati e così via. Di seguito vengono riportate alcune indicazioni in merito.

Evitare di conservare ID utente e password in file di solo testo

La memorizzazione di ID utente e password in file di solo testo è causa di grande vulnerabilità. Se ID utente e password fanno parte del codice sorgente, esse verranno rivelate se il codice sorgente viene carpito. Se anche si diffondono versioni compilate del codice, queste potranno essere disassemblate e l'ID utente e la password diverranno leggibili. Di conseguenza, è di fondamentale importanza che informazioni delicate quali ID utente e password non vengano inserite nel codice in testo semplice.

Una soluzione per tenere segreti ID utente e password consiste nell'uso della crittografia (vedere Servizi di crittografia), benché questa richieda cura nella memorizzazione delle informazioni sulle chiavi. In alternativa, è possibile conservare le informazioni segrete separatamente dall'applicazione, ma con l'ampia protezione offerta dalle autorizzazioni di NTFS.

Quando ci si connette a Microsoft SQL Server, sarà anche possibile utilizzare la protezione integrata, che verifica l'identità dell'utente attivo e non richiede il passaggio di ID utente e password. . L'utilizzo della protezione integrata è fortemente consigliato.

Nota   È necessario che gli sviluppatori ASP.NET prestino particolare attenzione quando utilizzano la protezione integrata. Per informazioni sulla verifica dell'identità dell'utente attivo corrente in un'applicazione ASP.NET, vedere Rappresentazione ASP.NET.

È possibile fornire informazioni sulla connessione a un OleDbConnection utilizzando un file Universal Data Link (UDL). Poiché i file UDL sono risorse esterne all'applicazione, sarà necessario proteggerli utilizzando le autorizzazioni di file di New Technologies File System (NTFS), onde evitare che le informazioni sulla connessione vengano visualizzate o modificate. Al fine di utilizzare per la connessione il file UDL corretto, specificarne il percorso completo.

I file UDL non sono crittografati. Se si desidera accrescere la protezione delle informazioni di connessione avvalendosi della crittografia, non sarà possibile utilizzare un file UDL per la stringa di connessione.

Impostare Mantieni informazioni di protezione su false

Se si imposta Mantieni informazioni di protezione su true o yes, sarà possibile ottenere informazioni riservate, compresi ID utente e password, dalla connessione stessa, dopo la sua apertura. Se invece si forniscono ID utente e password all'atto della connessione, è relativamente certo che tali informazioni verranno utilizzate per aprire la connessione e poi eliminate. È pertanto più sicuro impostare Mantieni informazioni di protezione su false o no.

Tale scelta diventa ancor più importante in presenza di una connessione aperta a una fonte non attendibile o della persistenza su disco delle informazioni di connessione. Impostare Mantieni informazioni di protezione su false assicura che le fonti non attendibili non abbiano accesso alle informazioni riservate relative alla connessione e assicura inoltre che le informazioni riservate non verranno salvate su disco insieme alla stringa di connessione.

Per impostazione predefinita, Mantieni informazioni di protezione è impostato su false.

Precauzioni da adottare quando si creano stringhe di connessione in base all'input dell'utente

Se si ricevono informazioni costitutive della stringa di connessione da una fonte esterna, quale un utente che immette un ID utente e una password, occorre assicurarsi che la stringa di connessione che si va a comporre non contenga parametri aggiuntivi in grado di modificare il comportamento della connessione. Per proteggere la stringa di connessione, convalidare l'input proveniente da una fonte esterna così da accertarsi che rispetti il formato previsto.

Convalida dell'input

Per verificare che l'input corrisponda a un determinato formato, è possibile utilizzare le espressioni regolari. Con .NET Framework viene fornito l'oggetto Regex che permette di convalidare un valore confrontandolo con un'espressione regolare. Il codice riportato di seguito verifica ad esempio che il valore immesso come ID utente sia una stringa alfanumerica di 8 caratteri.

Public Static Function ValidateUserid(inString As String) As Boolean
  Dim r As Regex = New Regex("^[A-Za-z0-9]{8}$")
  Return r.IsMatch(inString)
End Function
[C#]
public static bool ValidateUserid(string inString)
{
  Regex r = new Regex("^[A-Za-z0-9]{8}$");
  return r.IsMatch(inString)
}

Vedere anche

Scrittura di codice ADO.NET protetto