目錄 / Table of Contents

Sicherheitsgrenzen für Laden und Streaming-Reader

Diese Übersetzung dient nur zur Information; bei Abweichungen gilt die maßgebliche zh-TW-Quelle.

Das Laden von Kernpaketen und OdsStreamReader/OdtStreamReader verarbeiten nicht vertrauenswürdige ZIP/XML-Eingaben. Die Reader erstellen kein vollständiges Dokument-DOM, benötigen aber Puffer für aktuelle Zeilen, Knotentext, ZIP-Dekomprimierung und den XML-Reader. Geringer Speicherbedarf bedeutet nicht, dass die Eingabegröße ohne Einfluss bleibt.

Grenzen für Kernpakete

OdfDocument.Load, formatspezifische Load-Fassaden und direkte Aufrufe von OdfPackage.Open verwenden gemeinsam die Ressourcenbudgets von OdfLoadOptions.

Grenze Standardwert Schutzzweck
ZIP-Einträge 5,000 Verhindert CPU- und Speichererschöpfung durch viele kleine Einträge
Entpackte Größe eines Eintrags 500 MiB Begrenzt die Expansion eines ZIP-Eintrags
Gesamte entpackte Paketgröße 1 GiB Begrenzt die gesamte Expansion aller Einträge
Rohgröße nicht durchsuchbarer Eingaben 1 GiB Begrenzt die Pufferung vor der ZIP-Expansion
Zeichen in einem XML-Dokument 64 MiB Begrenzt XML-Verarbeitung und DOM-Aufbau

Eintragsanzahl, Eintragsgröße, Gesamtexpansion und rohe Paketgröße müssen positiv sein. Null oder negative Werte lösen sofort ArgumentOutOfRangeException aus. Nur MaxXmlCharactersInDocument = 0 deaktiviert die XML-Zeichengrenze; negative Werte bleiben ungültig.

Alle XML-Reader des Kerns müssen externe DTDs und Resolver verbieten. Neue Ladepfade müssen OdfLoadOptions oder gleichwertige dokumentierte Budgets verwenden. Die Validierungspfade für Pakete und Flat XML (OdfPackageValidator, OdfFlatDocumentValidator und Profilregelprüfungen) wenden ebenfalls MaxXmlCharactersInDocument an: Die Paketvalidierung verwendet package.LoadOptions, die Flat-Validierung OdfValidationOptions.LoadOptions (bei fehlender Angabe den Standardwert 64 MiB aus OdfLoadOptions). Signaturen, Zeitstempel, Zertifikatswiderrufsdaten und externe Netzwerkantworten besitzen eigene kleinere Grenzen; die Kernpaketgrenze ersetzt diese nicht. Diese Grenzen schützen Ressourcen, nicht den Dokumentinhalt; verwenden Sie für Richtlinien OdfPackageValidator, SanitizeMacros, Signaturprüfung oder pwsh eng/Test-OdfPolicy.ps1.

Grenzen der Streaming-Reader

Reader Grenze Standardwert
ODS XML-Zeichen 64 MiB
ODS Zeilen pro Arbeitsblatt 1,048,576
ODS Spalten pro Zeile 16,384
ODS Einzelne repeat-Angabe Zeilen 1,048,576; Spalten 16,384
ODS Text einer Zelle 16 MiB
ODT XML-Zeichen 64 MiB
ODT Zurückgegebene Textknoten 1,000,000
ODT Text eines Knotens 16 MiB

Beim Überschreiten schlägt das Lesen fehl; repeat-Daten werden nicht abgeschnitten und als scheinbar vollständig zurückgegeben. Wiederholen Sie den Vorgang nicht automatisch ohne Grenzen.

LeaveOpen ist standardmäßig false. Bei true werden XML-Entry-Stream und ZIP-Reader geschlossen, der äußerste vom Aufrufer bereitgestellte Stream bleibt jedoch geöffnet.

Behalten Sie für nicht vertrauenswürdige Dokumente die Standardgrenzen bei und validieren Sie Paket und Schema. Höhere XML- oder Textgrenzen erhöhen auch Speicher- und CPU DoS-Risiken. MaxXmlCharactersInDocument = 0 deaktiviert nur die XML-Zeichengrenze. Grenzen, Validierung und Bereinigung verringern Risiken, garantieren aber keine absolute Sicherheit vor bösartigen Dokumenten.

ODS- und ODT-Reader-Optionen prüfen dieselben Regeln bereits beim Zuweisen der Eigenschaften: Die XML-Grenze akzeptiert null, lehnt negative Werte jedoch ab; Zeilen-, Spalten-, repeat-, Knoten- und Textgrenzen müssen größer als null sein.