Freigeben über


Sichere ADO.NET-Verbindungen

Der Schutz des Zugriffs auf die Datenquelle stellt eines der wesentlichen Ziele beim Herstellen der Sicherheit einer Anwendung dar. Zum Schutz des Zugriffs auf eine Datenquelle ist es zwingend erforderlich, die Verbindungsinformationen wie Benutzer-ID, Kennwort, Name der Datenquelle usw. gegen unbefugten Zugriff zu sichern. Im Folgenden finden Sie Richtlinien für die Sicherstellung der privaten Nutzung von vertraulichen Verbindungsinformationen.

Kein Speichern von Benutzer-IDs und Kennwörtern in Klartext

Das Speichern von Benutzer-IDs und Kennwörtern in Klartext stellt ein erhebliches Sicherheitsrisiko dar. Benutzer-IDs und Kennwörter, die Sie in den Quellcode aufnehmen, sind gefährdet, falls jemals unbefugt auf den Quellcode zugegriffen wird. Selbst wenn Sie eine kompilierte Codeversion für eine externe Quelle bereitstellen, kann der Code u. U. disassembliert und die Benutzer-ID sowie das Kennwort offen gelegt werden. Vertrauliche Informationen wie Benutzer-ID und Kennwort dürfen daher auf keinen Fall als Klartext im Code vorhanden sein.

Einige Optionen zur Geheimhaltung der Benutzer-ID sowie des Kennwortes sind bei Verwendung kryptographischer Verfahren verfügbar (siehe Kryptographische Dienste). Dennoch ist beim Speichern von wichtigen Informationen äußerste Sorgfalt geboten. Dies gilt auch für geheime Informationen, die Sie getrennt von der Anwendung und stark geschützt durch NTFS-Berechtigungen speichern.

Beim Herstellen einer Verbindung zu Microsoft SQL Server haben Sie darüber hinaus die Möglichkeit, die integrierte Windows-Sicherheit zu verwenden, bei der weder Benutzer-ID noch Kenwort übermittelt, sondern die Identität des jeweils aktiven Benutzers erkannt wird. . Die Verwendung von Integrierte Sicherheit wird dringend empfohlen.

Hinweis   ASP.NET-Entwickler sollten bei Verwendung von Integrierte Sicherheit besonders sorgfältig vorgehen. Informationen über das Überprüfen der Identität des jeweils aktiven Benutzers in einer ASP.NET-Anwendung finden Sie unter Identitätswechsel in ASP.NET.

Mit einer UDL-Datei können Sie Verbindungsinformationen für ein OleDbConnection-Objekt zur Verfügung stellen. Da es sich bei einer UDL-Datei um eine externe Ressource der Anwendung handelt, sollten Sie UDL-Dateien unter Verwendung von NTFS-Dateiberechtigungen (New Technologies File System) sichern, um die Offenlegung bzw. Änderung von Verbindungsinformationen zu verhindern. Geben Sie außerdem einen vollständig qualifizierten Pfad zu einer UDL-Datei an, um die Verwendung der korrekten UDL-Datei für die Verbindung sicherzustellen.

UDL-Dateien sind nicht verschlüsselt. Wenn Sie die Sicherheit der Verbindungsinformationen mit Hilfe der Kryptografie erhöhen möchten, können Sie keine UDL-Datei zur Bereitstellung der Verbindungszeichenfolgen verwenden.

Beibehalten des Wertes "False" für Persistente Sicherheitsinformationen

Wenn der Wert für Persistente Sicherheitsinformationen auf true oder yes festgelegt ist, können sicherheitsrelevante Informationen wie die Benutzer-ID und das Kennwort nach dem Öffnen der Verbindung aus der Verbindung abgerufen werden. Falls Sie beim Herstellen einer Verbindung eine Benutzer-ID und ein Kennwort eingeben, ist es am sichersten, wenn diese Informationen zum Öffnen der Verbindung verwendet und anschließend verworfen bzw. gelöscht werden. Eine Möglichkeit, höhere Sicherheit zu gewährleisten, besteht folglich darin, Persistente Sicherheitsinformationen auf den Wert false bzw. no festzulegen.

Dies ist besonders dann wichtig, wenn Sie eine offene Verbindung zu einer nicht vertrauenswürdigen Quelle herstellen bzw. Verbindungsinformationen auf einem Datenträger beibehalten. Bei Festlegung von Persistente Sicherheitsinformationen auf false ist gewährleistet, dass eine nicht vertrauenswürdige Quelle keinen Zugriff auf die sicherheitsrelevanten Verbindungsinformationen hat und diese Informationen nicht gemeinsam mit Verbindungszeichenfolgen auf einem Datenträger beibehalten werden.

Der Wert false ist standardmäßig für Persistente Sicherheitsinformationen festgelegt.

Vorsicht beim Erstellen von Verbindungszeichenfolgen aus Benutzereingaben

Wenn Sie Informationen für Verbindungszeichenfolgen aus einer externen Quelle übernehmen (beispielsweise die Eingabe einer Benutzer-ID und eines Kennwortes durch einen Benutzer), müssen Sie sicherstellen, dass die Werte zum Erstellen der Verbindungszeichenfolge keine zusätzlichen Parameter für Verbindungszeichenfolgen enthalten, die die Sicherheit der Verbindung einschränken. Sie können die Sicherheit der Verbindungszeichenfolge gewährleisten, indem Sie alle aus externen Quellen stammenden Eingaben auf die Einhaltung des richtigen Formats überprüfen.

Überprüfen der Eingabe

Wenn Sie die Übereinstimmung der Eingabe mit einem bestimmten Format überprüfen möchten, können Sie reguläre Ausdrücke verwenden. .NET Framework stellt das Regex-Objekt zum Überprüfen eines Wertes mit einem regulären Ausdruck zur Verfügung. Mit dem folgenden Code kann z. B. sichergestellt werden, dass der Wert für eine Benutzer-ID aus einer alphanumerischen Zeichenfolge mit acht Zeichen besteht.

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)
}

Siehe auch

Schreiben von sicherem ADO.NET-Code