ADO-Sicherheitsentwurfsfeatures
In den folgenden Abschnitten werden Sicherheitsentwurfsfeatures in ActiveX Data Objects (ADO) 2.8 und höher beschrieben. Diese Änderungen wurden in ADO 2.8 vorgenommen, um die Sicherheit zu verbessern. ADO 6.0, das in Windows DAC 6.0 in Windows Vista enthalten ist, entspricht funktionell ADO 2.8, das in MDAC 2.8 in Windows XP und Windows Server 2003 enthalten war. In diesem Thema finden Sie Informationen dazu, wie Sie Ihre Anwendungen in ADO 2.8 oder höher am besten sichern können.
Wichtig
Wenn Sie Ihre Anwendung von einer früheren Version von ADO aktualisieren, empfiehlt es sich, die aktualisierte Anwendung auf einem Nichtproduktionscomputer zu testen, bevor Sie sie für Kunden bereitstellen. Auf diese Weise können Sie sicherstellen, dass Sie alle Kompatibilitätsprobleme kennen, bevor Sie die aktualisierte Anwendung bereitstellen.
Dateizugriffsszenarien in Internet Explorer
Die folgenden Features wirken sich auf die Funktionsweise von ADO 2.8 und höher aus, wenn sie auf skriptierten Webseiten in Internet Explorer verwendet werden.
Überarbeitetes und verbessertes Meldungsfeld für Sicherheitswarnungen wird jetzt zur Benachrichtigung von Benutzer*innen verwendet
Bei ADO 2.7 und früher wird die folgende Warnmeldung angezeigt, wenn eine skriptierte Webseite versucht, ADO-Code über einen nicht vertrauenswürdigen Anbieter auszuführen:
This page accesses data on another domain. Do you want to allow this? To
avoid this message in Internet Explorer, you can add a secure Web site to
your Trusted Sites zone on the Security tab of the Internet Options dialog
box.
Bei ADO 2.8 und höher wird die vorstehende Meldung nicht mehr angezeigt. Stattdessen wird in diesem Kontext die folgende Meldung angezeigt:
This Website uses a data provider that may be unsafe. If you trust the
Website, click OK, otherwise click Cancel.
Die vorstehende Meldung ermöglicht es Benutzer*innen, eine fundierte Entscheidung zu treffen und gleichzeitig die Konsequenzen für beide Auswahlmöglichkeiten zu kennen:
Wenn Benutzer*innen der Website vertrauen, kann durch Klicken auf „OK“ sämtlicher datenträgersicherer Code (alle ADO-Methoden und -Eigenschaften mit Ausnahme der per Datenträger zugänglichen APIs, die weiter unten in diesem Thema beschrieben werden) im Browserfenster ausgeführt werden.
Wenn Benutzer*innen der Website nicht vertrauen, wird der ADO-Code für den Datenzugriff durch Klicken auf „Abbrechen“ blockiert und kann insgesamt nicht ausgeführt werden.
Per Datenträger zugänglicher Code ist jetzt auf vertrauenswürdige Sites beschränkt
In ADO 2.8 wurden zusätzliche Entwurfsänderungen vorgenommen, um die Fähigkeit einer begrenzten Gruppe von APIs, die das Potenzial zum Lesen von bzw. Schreiben in Dateien auf dem lokalen Computer verfügbar machen könnten, gezielt einzuschränken. Hier sind die API-Methoden, die bei der Ausführung von Internet Explorer zur Sicherheit weiter eingeschränkt wurden:
Für das ADO Stream-Objekt bei Verwendung der LoadFromFile- oder SaveToFile-Methode.
Für das ADO-Recordset-Objekt bei Verwendung der Save- oder Open-Methode, z. B. wenn die AdCmdFile-Option festgelegt oder der Microsoft OLE DB-Persistenzanbieter (MSPersist) verwendet wird.
Bei diesen eingeschränkten Gruppen von potenziell per Datenträger zugänglichen Funktionen tritt bei ADO 2.8 und höher das folgende Verhalten auf, wenn Code, der diese Methoden verwendet, in Internet Explorer ausgeführt wird:
Wenn die Website, die den Code bereitgestellt hat, zuvor der Zonenliste „Vertrauenswürdige Sites“ hinzugefügt wurde, wird der Code im Browser ausgeführt und der Zugriff auf lokale Dateien gewährt.
Wenn die Website nicht in der Zonenliste „Vertrauenswürdige Sites“ angezeigt wird, wird der Code blockiert und der Zugriff auf lokale Dateien verweigert.
Hinweis
In ADO 2.8 und höher werden Benutzer*innen nicht benachrichtigt oder angewiesen, der Zonenliste „Vertrauenswürdige Sites“ Websites hinzuzufügen. Daher sind für die Verwaltung der Liste „Vertrauenswürdige Sites“ diejenigen zuständig, die websitebasierte Anwendungen bereitstellen oder unterstützen, welche Zugriff auf das lokale Dateisystem erfordern.
Zugriff auf die ActiveCommand-Eigenschaft für Recordset-Objekte blockiert
Wenn ADO 2.8 in Internet Explorer ausgeführt wird, blockiert es jetzt den Zugriff auf die ActiveCommand-Eigenschaft für ein aktives Recordset-Objekt und gibt einen Fehler zurück. Der Fehler tritt unabhängig davon auf, ob die Seite von einer Website stammt, die in der Liste „Vertrauenswürdige Sites“ registriert ist.
Änderungen bei der Behandlung von OLE DB-Anbietern und integrierter Sicherheit
Bei der Überprüfung von ADO 2.7 und früheren Versionen auf potenzielle Sicherheitsprobleme und -bedenken wurde das folgende Szenario ermittelt:
In einigen Fällen könnten OLE DB-Anbieter, die die integrierte Sicherheitseigenschaft DBPROP_AUTH_INTEGRATED unterstützen, skriptierten Webseiten möglicherweise die Wiederverwendung des ADO-Connection-Objekts erlauben und somit die unbeabsichtigte Herstellung einer Verbindung mit anderen Servern mit den aktuellen Anmeldeinformationen der Benutzer*innen ermöglichen. Um dies zu verhindern, behandeln ADO 2.8 und höher OLE DB-Anbieter je nachdem, wie sie integrierte Sicherheit bereitstellen bzw. nicht bereitstellen.
Für Webseiten, die aus Sites geladen werden, welche in der Zonenliste „Vertrauenswürdige Sites“ aufgeführt sind, enthält die folgende Tabelle eine Aufschlüsselung dazu, wie ADO-Verbindungen von ADO 2.8 und höher in den einzelnen Fällen verwaltet werden.
IE-Einstellungen für Benutzerauthentifizierung und Anmeldung | Anbieter unterstützt „Integrierte Sicherheit“, und UID und PWD werden angegeben (SQLOLEDB) | Anbieter unterstützt „Integrierte Sicherheit“ (JOLT, MSDASQL, MSPersist) nicht | Anbieter unterstützt „Integrierte Sicherheit“, und diese wird auf SSPI festgelegt (keine Angabe von UID/PWD) |
---|---|---|---|
Automatische Anmeldung mit aktuellem Benutzernamen und Kennwort | Verbindung zulassen | Verbindung zulassen | Verbindung zulassen |
Aufforderung zur Eingabe von Benutzername und Kennwort | Verbindung zulassen | Verbindung nicht zulassen | Verbindung nicht zulassen |
Automatische Anmeldung nur in der Intranetzone | Verbindung zulassen | Benutzer mit Sicherheitswarnung auffordern | Benutzer mit Sicherheitswarnung auffordern |
Anonyme Anmeldung | Verbindung zulassen | Verbindung nicht zulassen | Verbindung nicht zulassen |
In Fällen, in denen jetzt Sicherheitswarnung angezeigt wird, werden Benutzer*innen durch das Meldungsfeld wie folgt informiert:
This Website is using your identity to access a data source. If you trust this Website, click OK, otherwise click Cancel.
Die vorstehende Meldung ermöglicht es Benutzer*innen, eine fundiertere Entscheidung zu treffen und entsprechend fortzufahren.
Hinweis
Bei nicht vertrauenswürdigen Websites (d. h. Websites, die nicht in der Zonenliste „Vertrauenswürdige Sites“ aufgeführt sind), werden den Benutzer*innen möglicherweise zwei Sicherheitswarnungen nacheinander angezeigt, wenn der Anbieter ebenfalls nicht vertrauenswürdig ist: eine Warnung über den unsicheren Anbieter und eine zweite Warnung über den Versuch, dessen Identität zu verwenden. Wenn die Benutzer*innen auf „OK“ klicken, werden die in der vorherigen Tabelle beschriebenen Internet Explorer-Einstellungen und der entsprechende Antwortverhaltenscode ausgeführt.
Steuern, ob Kennworttext in ADO-Verbindungszeichenfolgen zurückgegeben wird
Wenn Sie versuchen, den Wert der ConnectionString-Eigenschaft für ein ADO-Connection-Objekt abzurufen, treten die folgenden Ereignisse auf:
Wenn die Verbindung geöffnet ist, wird ein Initialisierungsaufruf an den zugrunde liegenden OLE DB-Anbieter vorgenommen, um die Verbindungszeichenfolge abzurufen.
Abhängig von der Einstellung im OLE DB-Anbieter der DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO-Eigenschaft werden Kennwörter zusammen mit anderen zurückgegebenen Verbindungszeichenfolgeninformationen eingeschlossen.
Wenn beispielsweise die dynamische ADO-Eigenschaft Persist Security Info auf True festgelegt ist, werden Kennwortinformationen in die zurückgegebene Verbindungszeichenfolge eingeschlossen. Anderenfalls, d. h. wenn der zugrunde liegende Anbieter die Eigenschaft auf False (z. B. mit dem SQLOLEDB-Anbieter) festgelegt hat, werden die Kennwortinformationen in der zurückgegebenen Verbindungszeichenfolge nicht angegeben.
Wenn Sie OLE DB-Drittanbieter (d. h. nicht Microsoft) mit Ihrem ADO-Anwendungscode verwenden, überprüfen Sie möglicherweise, wie die DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO-Eigenschaft implementiert wird, um festzustellen, ob das Einschließen von Kennwortinformationen in ADO-Verbindungszeichenfolgen zulässig ist.
Überprüfen auf Nichtdateigeräte beim Laden und Speichern von Recordsets oder Streams
Bei ADO 2.7 und früheren Dateieingabe-/Ausgabevorgängen wie Öffnen und Speichern, die zum Lesen und Schreiben dateibasierter Daten verwendet wurden, kann in einigen Fällen eine URL oder ein Dateiname verwendet werden, der einen nicht datenträgerbasierten Dateityp angegeben hat. Beispielsweise könnten LPT1, COM2, PRN.TXT und AUX als Alias für Eingabe/Ausgabe zwischen Druckern und Zusatzgeräten auf dem System verwendet werden.
Bei ADO 2.8 und höher wurde diese Funktionalität aktualisiert. Zum Öffnen und Speichern von Recordset- und Stream-Objekten führt ADO jetzt eine Dateitypüberprüfung durch, um sicherzustellen, dass das in einer URL oder einem Dateinamen angegebene Eingabe- oder Ausgabegerät tatsächlich eine Datei ist.
Hinweis
Die In diesem Abschnitt beschriebene Dateitypüberprüfung gilt nur für Windows 2000 und höher. Sie gilt nicht für Situationen, in denen ADO 2.8 oder höher unter früheren Windows-Versionen ausgeführt wird, z. B. Windows 98.