System.Xml.XmlReaderSettings-Klasse
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Sie verwenden die Create-Methode, um XmlReader-Instanzen abzurufen. Diese Methode verwendet die XmlReaderSettings-Klasse, um anzugeben, welche Features im von ihr erstellten XmlReader-Objekt implementiert werden sollen.
Informationen zu den Einstellungen, die für Konformitätsüberprüfungen, Validierung und andere gängige Szenarios verwendet werden sollen, finden Sie in den Abschnitten „Hinweise“ der Referenzseiten zu XmlReader und Create. Eine Liste der Standardeinstellungen finden Sie im XmlReaderSettings()-Konstruktor.
Sicherheitshinweise
Beachten Sie bei Verwendung der XmlReaderSettings-Klasse Folgendes:
Das ProcessInlineSchema-Validierungsflag und das ProcessSchemaLocation-Validierungsflag eines XmlReaderSettings-Objekts werden nicht standardmäßig festgelegt. Wenn diese Flags festgelegt sind, wird der XmlResolver des XmlReaderSettings-Objekts verwendet, um die im Instanzdokument des XmlReader erkannten Schemaspeicherorte aufzulösen. Wenn das XmlResolver-Objekt
null
ist, werden Schemaspeicherorte nicht aufgelöst, auch wenn die Validierungsflags ProcessInlineSchema und ProcessSchemaLocation festgelegt sind.Durch während der Validierung hinzugefügte Schemas werden neue Typen hinzugefügt, sodass das Validierungsergebnis des überprüften Dokuments möglicherweise geändert wird. Daher sollten externe Schemata nur von vertrauenswürdigen Quellen aufgelöst werden.
Benachrichtigungen zu Validierungsfehlern können vertrauliche Informationen zum Inhaltsmodell offenlegen. Validierungsfehler- und Warnmeldungen werden mithilfe des ValidationEventHandler-Delegaten verarbeitet oder als XmlSchemaValidationException verfügbar gemacht, wenn dem XmlReaderSettings-Objekt kein Ereignishandler bereitgestellt wird (Validierungswarnungen führen nicht dazu, dass eine XmlSchemaValidationException-Klasse ausgelöst wird). Diese Inhaltsmodellinformationen dürfen in nicht vertrauenswürdigen Szenarios nicht offengelegt werden. Benachrichtigungen zu Validierungswarnungen werden standardmäßig unterdrückt und können durch Festlegen des ReportValidationWarnings-Flags gemeldet werden.
Die SourceUri-Eigenschaft eines XmlSchemaValidationException-Elements gibt den URI-Pfad zur Schemadatei zurück, die die Ausnahme verursacht hat. Die SourceUri-Eigenschaft sollte in nicht vertrauenswürdigen Szenarios nicht verfügbar gemacht werden.
Es wird empfohlen, das ProcessIdentityConstraints-Flag zu deaktivieren (in der Standardeinstellung aktiviert), wenn Sie nicht vertrauenswürdige, große XML-Dokumente in Szenarios mit Hochverfügbarkeit anhand eines Schemas validieren, das innerhalb des Dokuments einen großen Teil von Identitätseinschränkungen aufweist.
XmlReaderSettings-Objekte können vertrauliche Informationen (z. B. Anmeldeinformationen des Benutzers) enthalten. Sie sollten daher beim Zwischenspeichern von XmlReaderSettings-Objekten oder bei der Übergabe eines XmlReaderSettings-Objekts von einer Komponente an eine andere sorgfältig vorgehen.
Die DTD-Verarbeitung ist in der Standardeinstellung deaktiviert. Wenn Sie die DTD-Verarbeitung aktivieren, müssen Sie wissen, dass DTDs aus nicht vertrauenswürdigen Quellen und möglichen Denial-of-Service-Angriffen eingeschlossen werden. Verwenden Sie XmlSecureResolver, um die Ressourcen zu beschränken, auf die XmlReader zugreifen kann.
Achten Sie darauf, keine Unterstützung für Komponenten aus einer nicht vertrauenswürdigen Quelle zu gewähren (z. B. den Objekten NameTable, XmlNamespaceManager und XmlResolver).
Zwischen der Speichernutzung einer Anwendung, die XmlReader verwendet, und der Größe des analysierten XML-Dokuments kann eine enge Beziehung bestehen. Im Rahmen von Denial-of-Service-Angriffen können auch übermäßig große XML-Dokumente zum Analysieren gesendet werden. Sie können die Größe des Dokuments einschränken, das geparst werden kann, indem Sie die Eigenschaft MaxCharactersInDocument festlegen und dann die Anzahl der Zeichen einschränken, die sich aus der Erweiterung von Entitäten ergeben, indem Sie die Eigenschaft MaxCharactersFromEntities festlegen.