目錄 / Table of Contents

Beveiligingslimieten voor laden en streaming readers

Informatieve vertaling; bij verschillen geldt de gezaghebbende zh-TW-bron.

Pakketladen en OdsStreamReader/OdtStreamReader verwerken niet-vertrouwde ZIP/XML-invoer. De readers bouwen geen volledig DOM, maar reserveren buffers voor de huidige rij, knooptekst, ZIP-decompressie en XML-reader. Laag resident geheugen maakt invoergrootte niet irrelevant.

Limieten voor het kernpakket

OdfDocument.Load, formaatspecifieke Load-facades en OdfPackage.Open delen de resourcebudgetten van OdfLoadOptions.

Limiet Standaard Beschermingsdoel
ZIP-items 5,000 Voorkomt uitputting van CPU en geheugen door veel kleine items
Uitgepakte grootte van één item 500 MiB Begrens de expansie van één ZIP-item
Totale uitgepakte grootte 1 GiB Begrens de totale expansie van het pakket
Ruwe niet-zoekbare invoergrootte 1 GiB Begrens buffering vóór ZIP-expansie
Tekens in één XML-document 64 MiB Begrens XML-verwerking en DOM-opbouw

De vier ZIP-limieten moeten positief zijn; nul of negatieve waarden veroorzaken direct ArgumentOutOfRangeException. Alleen MaxXmlCharactersInDocument = 0 schakelt de XML-limiet uit. Alle XML-readers moeten externe DTD's en resolvers verbieden. Nieuwe laadpaden moeten OdfLoadOptions gebruiken. Validatiepaden voor pakketten en Flat XML (OdfPackageValidator, OdfFlatDocumentValidator en scans van profielregels) passen ook MaxXmlCharactersInDocument toe: pakketvalidatie gebruikt package.LoadOptions, terwijl Flat-validatie OdfValidationOptions.LoadOptions gebruikt (standaard 64 MiB van OdfLoadOptions wanneer niet opgegeven). Handtekeningen, tijdstempels, gegevens over ingetrokken certificaten en externe netwerkreacties hebben eigen, kleinere limieten; de kernpakketlimiet vervangt deze niet. Gebruik voor inhoudsbeleid OdfPackageValidator, SanitizeMacros, handtekeningvalidatie of pwsh eng/Test-OdfPolicy.ps1.

Limieten voor streaming readers

Reader Limiet Standaard
ODS XML-tekens 64 MiB
ODS Rijen per werkblad 1,048,576
ODS Kolommen per rij 16,384
ODS Eén repeat-declaratie rijen 1,048,576; kolommen 16,384
ODS Tekst uit één cel 16 MiB
ODT XML-tekens 64 MiB
ODT Teruggegeven tekstknopen 1,000,000
ODT Tekst uit één knoop 16 MiB

Bij overschrijding mislukt het lezen; repeat wordt niet afgekapt om ogenschijnlijk volledige gegevens te leveren. Probeer niet automatisch opnieuw zonder limieten. LeaveOpen is standaard false; bij true sluiten XML-entry en ZIP-reader, maar blijft de buitenste stream van de aanroeper open.

Behoud limieten voor niet-vertrouwde documenten en valideer pakket en schema. Hogere limieten vergroten geheugen- en CPU DoS-risico. MaxXmlCharactersInDocument = 0 schakelt alleen de XML-tekenlimiet uit. Limieten, validatie en opschoning beperken risico maar garanderen geen absolute veiligheid.

ODS- en ODT-readeropties valideren de regels bij toewijzing: de XML-limiet accepteert nul, terwijl limieten voor rijen, kolommen, repeat, knopen en tekst groter dan nul moeten zijn.