Sicurezza in LINQ to SQL

Quando si esegue la connessione a un database, vi sono sempre problemi relativi alla sicurezza. Sebbene in LINQ to SQL siano disponibili alcune nuove modalità di utilizzo dei dati in SQL Server, non vengono forniti meccanismi di sicurezza aggiuntivi.

Controllo dell'accesso e autenticazione

LINQ to SQL non dispone di meccanismi di autenticazione o di un modello utente. Usare le funzionalità di sicurezza di SQL Server per controllare l'accesso al database, le tabelle di database, le visualizzazioni e le stored procedure mappate al modello a oggetti. Concedere l'accesso minimo richiesto agli utenti e richiedere password complesse per l'autenticazione utente.

Informazioni sul mapping e sullo schema

Le informazioni sul mapping dei tipi SQL-CLR e sullo schema di database nel modello a oggetti o nel file di mapping esterno sono disponibili per tutti gli utenti che dispongono di accesso a tali file nel file system. Si supponga che le informazioni sullo schema siano disponibili per tutti gli utenti che possono accedere al modello a oggetti o al file di mapping esterno. Per impedire un accesso più diffuso alle informazioni sullo schema, usare meccanismi di sicurezza dei file per proteggere i file di origine e i file di mapping.

Stringhe di connessione

L'utilizzo di password nelle stringhe di connessione deve essere evitato, quando possibile. Una stringa di connessione non solo rappresenta un rischio per la sicurezza di per sé, ma può anche essere aggiunta come testo non crittografato al modello a oggetti o al file di mapping esterno quando si usa Progettazione relazionale oggetti o lo strumento da riga di comando SQLMetal. Chiunque disponga di accesso al modello a oggetti o al file di mapping esterno tramite il file system può vedere la password di connessione, se è inclusa nella stringa di connessione.

Per ridurre al minimo tali rischi, usare la sicurezza integrata per stabilire una connessione attendibile con SQL Server. Usando questo approccio, non è necessario archiviare una password nella stringa di connessione. Per altre informazioni, vedere Sicurezza di SQL Server.

In assenza della sicurezza integrata, nella stringa di connessione è necessaria una password non crittografata. I modi migliori per proteggere la stringa di connessione, in ordine di rischio crescente, sono i seguenti:

  • Utilizzare la sicurezza integrata.

  • Proteggere le stringhe di connessione tramite password e ridurre al minimo i passaggi delle stringhe di connessione.

  • Usare una classe System.Data.SqlClient.SqlConnection anziché una stringa di connessione, in quanto la classe limita la durata dell'esposizione. È possibile creare un'istanza della classe System.Data.Linq.DataContext LINQ to SQL usando un oggetto SqlConnection.

  • Ridurre al minimo la durata e i punti di contatto per tutte le stringhe di connessione.

Vedi anche