Freigeben über


Wichtige Sicherheitsüberlegungen zu SQLXML

Gilt für: SQL Server Azure SQL-Datenbank

Im Folgenden werden Sicherheitsrichtlinien zur Verwendung von SQLXML für den Datenzugriff erläutert.

  • Der SQLXMLOLEDB-Anbieter macht eine StreamFlags-Eigenschaft verfügbar, mit der Sie Flags festlegen können, die angeben, welche SQLXML-Funktionalität für jede bestimmte Instanz aktiviert oder deaktiviert werden soll. Anhand dieser Eigenschaft können Sie die Verwendung von SQLXML anpassen und sicherstellen, dass nur die gewünschten Komponenten aktiviert werden. Weitere Informationen finden Sie unter SQLXMLOLEDB-Anbieter (SQLXML 4.0).For more information, see SQLXMLOLEDB Provider (SQLXML 4.0).

  • Wenn SQLXML-Fehler auftreten und zurückgegeben werden, können sie Informationen über das Datenbankschema wie Tabellennamen, Spaltennamen und Typ umfassen. Sie sollten bei der Behandlung dieser Fehler vorsichtig sein, damit Informationen zu Ihrer SQL Server-Installation von Benutzern, bei denen sie nicht beabsichtigt oder benötigt werden, nicht leicht auffindbar sind.

  • Wenn sie zum Abfragen oder Senden von Aktualisierungen an SQL Server verwendet werden, legt SQLXML keine Beschränkung für die Datenmenge fest, die ausgetauscht werden kann, und überprüft nicht die Größe der Daten in einer SQLXML-Nutzlast, bevor Sie versuchen, sie zu verarbeiten. Wenn Sie Ihre Anwendung mit SQLXML entwickeln, liegt es in Ihrem Verantwortungsbereich sicherzustellen, dass genügend Systemspeicher zum Verarbeiten der Daten vorhanden ist. Beim Abfragen von Daten vom Server sollten Sie beispielsweise überprüfen, ob genügend Speicherplatz auf dem Client vorhanden ist, um die abgefragten Daten zu empfangen. Ebenso müssen Sie beim Laden von Daten auf den Server sicherstellen, dass genügend Speicherplatz auf dem Server zur Verarbeitung der Daten und genügend Festplattenspeicher auf dem Server zum Speichern der Daten zur Verfügung steht.

  • SQLXML generiert Transact-SQL-Abfragen dynamisch und aktualisiert Befehle und sendet sie zur Ausführung an SQL Server. Dies ist die einzige Methode, bei der SQLXML den Server abfragt und aktualisiert. Ergebnisse werden entweder als Datenstrom (von XML) oder als Rowset empfangen.

  • Beim Empfang von Abfrageergebnissen führt SQLXML basierend auf dem Inhalt der empfangenen Daten keine Aktionen aus. Es erfolgt keine zusätzliche Verarbeitung auf Grundlage des Typs oder des Inhalts der Daten. Die Daten werden nie als Code behandelt, mit dem Aktionen ausgeführt werden.

  • Beim Ausführen von XML-Vorlagen übersetzt SQLXML die XPath- und DBObject-Abfragen, die in der übermittelten Vorlage enthalten sind, in Transact-SQL-Befehle, die dann für SQL Server ausgeführt werden. Diese Befehle beeinflussen nur vorhandene Daten. Von SQLXML generierte Befehle ändern nie die Struktur der Datenbank. Benutzer müssen explizite Befehle ausgeben, um die Datenbankstruktur zu ändern. Beispielsweise durch Einschließen in einen sql:query-Block einer Vorlage.

  • Beim Ausführen von DBObject-Abfragen und XPath-Anweisungen über Zuordnungsdateien lässt SQLXML die Daten in der Datenbank unverändert.

  • SQLXML kann Formatierungsänderungen an den angegebenen Daten basierend auf den Unterschieden zwischen den XML- und SQL Server-Datenmodellen vornehmen. Zum Beispiel ist das Format für die Zeitangabe unterschiedlich. SQLXML versucht, diese Unterschiede aufzulösen. Als Folge können Genauigkeitsinformationen verloren gehen.

  • SQLXML legt keine Beschränkungen für die Dauer der Verarbeitung der Daten fest. Die Verarbeitung wird fortgesetzt, bis ein Fehler auftritt oder die Verarbeitung abgeschlossen ist.

  • SQLXML schreibt nicht ins Dateisystem. Wenn Benutzer Daten, die sie aus der Datenbank abrufen, speichern möchten, müssen sie dazu ihren Code verwenden.

  • SQLXML ermöglicht es Benutzern, eine beliebige SQL-Abfrage für die Datenbank auszuführen. Diese Funktion sollte nie einer unsicheren oder unkontrollierten Quelle verfügbar gemacht werden, da es im Grunde eine Öffnung der SQL-Datenbank ohne Bereitstellung für die Benutzer bedeutet.

  • Beim Ausführen von Updategrams übersetzt SQLXML die Updg:sync-Blöcke in DELETE-, UPDATE- und INSERT-Befehle für die SQL Server-Instanz. Diese Befehle beeinflussen nur vorhandene Daten. Von SQLXML generierte Befehle ändern nie die Datenbank. Benutzer müssen explizite Befehle ausgeben, um die Datenbankstruktur zu ändern. Beispielsweise durch Einschließen in einen sql:query-Block einer Vorlage.

  • Beim Ausführen von DiffGrams übersetzt SQLXML das DiffGram in DELETE-, UPDATE- und INSERT-Befehle für die SQL Server-Instanz. Diese Befehle beeinflussen nur vorhandene Daten. Von SQLXML generierte Befehle ändern nie die Datenbank. Benutzer müssen explizite Befehle ausgeben, um die Datenbankstruktur zu ändern. Beispielsweise durch Einschließen in einen sql:query-Block einer Vorlage.

Weitere Informationen

Sicherheitsüberlegungen zu SQLXML 4.0