Sicherheit in LINQ to SQL
Aktualisiert: November 2007
Beim Herstellen einer Datenbankverbindung müssen Sie stets mit Sicherheitsrisiken rechnen. LINQ to SQL umfasst zwar einige neue Möglichkeiten zum Arbeiten mit Daten in SQL Server, es stellt jedoch keine zusätzlichen Sicherheitsmechanismen zur Verfügung.
Zugriffssteuerung und Authentifizierung
LINQ to SQL verfügt nicht über ein eigenes Benutzermodell oder eigene Authentifizierungsmechanismen. Steuern Sie den Zugriff auf die Datenbank, Datenbanktabellen, Sichten und gespeicherten Prozeduren, die dem Objektmodell zugeordnet sind, über die SQL Server-Sicherheit. Gewähren Sie Benutzern nur die erforderlichen Zugriffsrechte, und erzwingen Sie bei der Benutzerauthentifizierung sichere Kennwörter.
Mapping- und Schemainformationen
Die SQL-CLR-Typmapping und die Datenbankschemainformationen in Ihrem Objektmodell oder der externen Mappingdatei sind für alle Benutzer verfügbar, die im Dateisystem auf diese Dateien zugreifen können. Gehen Sie davon aus, dass die Schemainformationen allen Benutzern zur Verfügung stehen, die auf das Objektmodell oder die externe Mappingdatei zugreifen können. Um einen Zugriff auf die Schemainformationen auf breiter Basis zu verhindern, schützen Sie die Quelldateien und Mappingdateien mithilfe von Dateisicherheitsmechanismen.
Verbindungszeichenfolgen
Die Verwendung von Kennwörtern in Verbindungszeichenfolgen sollte möglichst vermieden werden. Eine Verbindungszeichenfolge ist nicht nur ein eigenständiges Sicherheitsrisiko, sie wird dem Objektmodell oder der externen Mappingdatei beim Verwenden des O/R-Designers oder des SQLMetal-Befehlszeilentools möglicherweise auch als Klartext hinzugefügt. Jeder Benutzer mit Zugriff auf das Objektmodell oder die externe Mappingdatei über das Dateisystem kann das Verbindungskennwort lesen (sofern es in der Verbindungszeichenfolge enthalten ist).
Um solche Risiken zu minimieren, verwenden Sie integrierte Sicherheit, um eine sichere Verbindung mit SQL Server herzustellen. Bei diesem Ansatz müssen Sie kein Kennwort in der Verbindungszeichenfolge speichern. Weitere Informationen finden Sie unter SQL Server-Sicherheit (ADO.NET).
Ohne integrierte Sicherheitsfunktionen ist in der Verbindungszeichenfolge ein Klartextkennwort erforderlich. Am besten schützen Sie die Verbindungszeichenfolge folgendermaßen (sortiert nach zunehmendem Risiko):
Verwenden Sie die integrierte Sicherheit von Windows.
Schützen Sie Verbindungszeichenfolgen mit Kennwörtern, und geben Sie Verbindungszeichenfolgen möglichst selten weiter.
Verwenden Sie statt einer Verbindungszeichenfolge eine System.Data.SqlClient.SqlConnection-Klasse, da sie die Dauer der Zugriffsmöglichkeiten beschränkt. Die System.Data.Linq.DataContext-Klasse von LINQ to SQL kann mit einer SqlConnection instanziiert werden.
Minimieren Sie für alle Verbindungszeichenfolgen die Lebensdauer und die Zugriffsmöglichkeiten.
Siehe auch
Konzepte
FAQ (Häufig gestellte Fragen) zu LINQ to SQL