Freigeben über


ADO-Sicherheitsdesign-Merkmale

In den folgenden Abschnitten werden die 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, wird empfohlen, ihre aktualisierte Anwendung auf einem Nicht-Produktionscomputer zu testen, bevor Sie sie für Kunden bereitstellen. Auf diese Weise können Sie sicherstellen, dass Sie kompatibilitätsprobleme kennen, bevor Sie Die aktualisierte Anwendung bereitstellen.

Internet Explorer-Dateizugriffsszenarien

Die folgenden Features wirken sich auf die Funktionsweise von ADO 2.8 und höher aus, wenn sie in skriptierten Webseiten in Internet Explorer verwendet wird.

Überarbeitetes und verbessertes Meldungsfeld für Sicherheitswarnungen, das jetzt verwendet wird, um Benutzer zu benachrichtigen

Für ADO 2.7 und früher wird die folgende Warnmeldung angezeigt, wenn eine skriptierte Webseite versucht, ADO-Code von einem 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.

Für ADO 2.8 und höher wird die vorherige 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 vorangehende Meldung ermöglicht es dem Benutzer, fundierte Entscheidungen zu treffen, während er die Konsequenzen für eine der beiden Optionen kennt:

  • Wenn der Benutzer der Website vertraut, lässt das Klicken auf "OK" den gesamten datenträgersicheren Code (alle ADO-Methoden und -Eigenschaften mit den Ausnahmen der weiter unten in diesem Thema beschriebenen Datenträgerzugriffs-APIs) zum Ausführen und Ausführen im Browserfenster zu.

  • Wenn der Benutzer der Website nicht vertraut, verhindert das Klicken auf "Abbrechen", dass der ADO-Code für den Datenzugriff vollständig ausgeführt wird.

Auf Datenträger zugänglicher Code, der jetzt auf vertrauenswürdige Websites beschränkt ist

Zusätzliche Entwurfsänderungen wurden in ADO 2.8 vorgenommen, die die Fähigkeiten einer begrenzten Gruppe von APIs einschränken, wodurch das Risiko entsteht, auf Dateien des lokalen Computers zuzugreifen oder diese zu schreiben. Im Folgenden sind die API-Methoden aufgeführt, die bei der Ausführung von Internet Explorer weiter eingeschränkt wurden:

Für diese eingeschränkten Gruppen von funktionen, auf die auf den Datenträger zugegriffen werden kann, tritt das folgende Verhalten für ADO 2.8 und höher auf, wenn code, der diese Methoden verwendet, in Internet Explorer ausgeführt wird:

  • Wenn die Website, die den Code bereitgestellt hat, zuvor zur Zonenliste "Vertrauenswürdige Sites" hinzugefügt wurde, wird der Code im Browser ausgeführt, und der Zugriff auf lokale Dateien wird 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.

    Anmerkung

    In ADO 2.8 und höher wird der Benutzer weder benachrichtigt noch dazu aufgefordert, der Liste der Zone für vertrauenswürdige Sites Websites hinzuzufügen. Daher ist die Verwaltung der Liste "Vertrauenswürdige Websites" die Verantwortung für diejenigen, die websitebasierte Anwendungen bereitstellen oder unterstützen, die Zugriff auf das lokale Dateisystem erfordern.

Zugriff auf die ActiveCommand-Eigenschaft für Recordset-Objekte blockiert

Wenn sie in Internet Explorer ausgeführt wird, blockiert ADO 2.8 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 der vertrauenswürdigen Websites registriert ist.

Änderungen bei der Handhabung von OLE DB-Anbietern und integrierter Sicherheit

Beim Überprüfen 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 Integrated Security DBPROP_AUTH_INTEGRATED-Eigenschaft unterstützen, möglicherweise skriptierte Webseiten erlauben, das ADO Connection-Objekt wiederzuverwenden, um unbeabsichtigt eine Verbindung mit anderen Servern herzustellen, die die aktuellen Anmeldeinformationen der Benutzer verwenden. Um dies zu verhindern, behandeln ADO 2.8 und höher OLE DB-Anbieter, je nachdem, wie sie sich dafür entschieden haben, integrierte Sicherheit bereitzustellen oder nicht bereitzustellen.

Für Webseiten, die aus Websites geladen werden, die in der Zone liste "Vertrauenswürdige Sites" aufgeführt sind, bietet die folgende Tabelle eine Aufschlüsselung der Art und Weise, wie ADO 2.8 und höher ADO-Verbindungen in jedem Fall verwaltet.

IE-Einstellungen für die Benutzerauthentifizierung, Anmeldung Anbieter unterstützt "Integrated Security" und UID und PWD werden angegeben (SQLOLEDB) Der Anbieter unterstützt nicht "Integrated Security" (JOLT, MSDASQL, MSPersist) Der Provider unterstützt "Integrated Security" und diese ist auf SSPI eingestellt (es werden keine UID/PWD angegeben)
Automatische Anmeldung mit aktuellem Benutzernamen und Kennwort Verbindung zulassen Verbindung zulassen Verbindung zulassen
Eingabeaufforderung für Benutzername und Kennwort Verbindung zulassen Verbindungsfehler Verbindungsfehler
Automatische Anmeldung nur in der Intranetzone Verbindung zulassen Benutzer eine Sicherheitswarnung anzeigen Benutzer mit einer Sicherheitswarnung warnen
Anonyme Anmeldung Verbindung zulassen Verbindungsfehler Verbindungsfehler

In dem Fall, in dem jetzt eine Sicherheitswarnung angezeigt wird, informiert das Meldungsfeld die Benutzer:

This Website is using your identity to access a data source. If you trust this Website, click OK, otherwise click Cancel.

Die vorangehende Meldung ermöglicht es dem Benutzer, eine fundiertere Entscheidung zu treffen und entsprechend fortzufahren.

Anmerkung

Bei nicht vertrauenswürdigen Websites (d. h. Websites, die nicht in der Zone liste der vertrauenswürdigen Websites aufgeführt sind), wenn der Anbieter ebenfalls nicht vertrauenswürdig ist (wie weiter oben in diesem Abschnitt erläutert), wird dem Benutzer möglicherweise zwei Sicherheitswarnungen in einer Zeile angezeigt, eine Warnung über den unsicheren Anbieter und eine zweite Warnung über den Versuch, ihre Identität zu verwenden. Wenn der Benutzer auf "OK" bei der ersten Warnung klickt, werden die in der vorherigen Tabelle beschriebenen Internet Explorer-Einstellungen und der Antwortverhaltenscode ausgeführt.

Steuern, ob Kennworttext in ADO-Verbindungszeichenfolgen zurückgegeben wird

Wenn Sie versuchen, den Wert der eigenschaft ConnectionString für ein ADO-Connection-Objekt abzurufen, treten die folgenden Ereignisse auf:

  1. Wenn die Verbindung geöffnet ist, wird ein Initialisierungsaufruf an den zugrunde liegenden OLE DB-Anbieter vorgenommen, um die Verbindungszeichenfolge abzurufen.

  2. Abhängig von der Einstellung der DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO-Eigenschaft im OLE DB-Anbieter werden Kennwörter zusammen mit anderen Informationen der zurückgegebenen Verbindungszeichenfolge eingeschlossen.

Wenn beispielsweise die dynamische ADO-Eigenschaft Persist Security Info auf Truefestgelegt ist, werden kennwortinformationen in der zurückgegebenen Verbindungszeichenfolge enthalten. Andernfalls wird die Kennwortinformation in der zurückgegebenen Verbindungszeichenfolge weggelassen, wenn der zugrunde liegende Anbieter die Eigenschaft auf False (z. B. mit dem SQLOLEDB-Anbieter) festgelegt hat.

Wenn Sie OLE DB-Anbieter von Drittanbietern (d. h. nicht Von Microsoft) mit Ihrem ADO-Anwendungscode verwenden, überprüfen Sie möglicherweise, wie die DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO-Eigenschaft implementiert ist, um zu ermitteln, ob die Aufnahme von Kennwortinformationen in ADO-Verbindungszeichenfolgen zulässig ist.

Überprüfen auf Nichtdateigeräte beim Laden und Speichern von Recordsets oder Datenströmen

Bei ADO 2.7 und früheren Dateieingabe-/Ausgabevorgängen wie Open und Speichern, die zum Lesen und Schreiben von dateibasierten Daten verwendet wurden, können in einigen Fällen zulassen, dass eine URL oder ein Dateiname verwendet werden kann, die einen nicht datenträgerbasierten Dateityp angegeben haben. Beispielsweise könnten LPT1, COM2, PRN.TXT und AUX als Alias für die Eingabe/Ausgabe zwischen Druckern und Peripheriegeräten auf dem System verwendet werden, um bestimmte Funktionen zu ermöglichen.

Für ADO 2.8 und höher wurde diese Funktionalität aktualisiert. Zum Öffnen und Speichern Recordset- und Stream-Objekte führt ADO nun eine Dateitypüberprüfung durch, um sicherzustellen, dass das in einer URL oder einem Dateinamen angegebene Eingabe- oder Ausgabegerät eine tatsächliche Datei ist.

Anmerkung

Die In diesem Abschnitt beschriebene Dateitypüberprüfung gilt nur für Windows 2000 und höher. Es 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.