Ograniczone budżety parsera PDF
Budżety parsera w zakresie dokumentu zatrzymują wrogie lub uszkodzone wejście, zanim konstruowanie tokenów, zbiorcza praca na tokenach, wzrost tablic lub słowników albo powtarzające się błędne tokeny pochłoną nadmierne zasoby
Domyślne kompatybilne
ParserMaxTokenBytesdomyślnie wynosi 67 108 864 bajtyParserMaxTotalTokensdomyślnie wynosi 10 000 000 tokenów na ładowanieParserMaxContainerItemsdomyślnie wynosi 1 000 000 wpisów na tablicę lub słownikParserMaxBadTokensdomyślnie wynosi 64 błędne tokeny na ładowanie
Ustaw dowolny limit na zero, aby wyłączyć ten pojedynczy limit
Wartości ujemne podnoszą ERangeError
Polityka ścisła
ApplyStrictParserBudgetPolicy wybiera limit tokenu 1 MiB, 100 000 tokenów łącznie, 10 000 wpisów kontenerów i 8 błędnych tokenów
PDF.ApplyStrictParserBudgetPolicy;
try
PDF.LoadFromFile(UntrustedFileName);
except
on E: EHPDFParserBudgetExceeded do
LogParserRejection(E.Limit, E.Observed, E.Maximum);
end;
ResetParserBudgetPolicy przywraca domyślne kompatybilne
Błędy i telemetria
Przekroczony limit podnosi EHPDFParserBudgetExceeded z wartościami Limit, Observed i Maximum
THPDFParserBudgetLimit wskazuje pblTokenBytes, pblTotalTokens, pblContainerItems lub pblBadTokens
GetLastParserBudgetStatistics zwraca migawkę THPDFParserBudgetStatistics ze skonfigurowanymi limitami, licznikami tokenów i tokenów błędnych, szczytowymi rozmiarami tokenów i kontenerów, informacją o przekroczeniu i ważnością sesji
Wyjątki budżetu pozostają terminalne przy nowoczesnym parsowaniu, tradycyjnym parsowaniu, odzyskiwaniu referencji krzyżowych i izolacji błędów per obiekt
Brama wydajności
Brama regresji Win32 odrzuca token 2 MiB w 215 ms przy szczycie procesu 34 476 032 bajty i odrzuca kontener miliona tokenów w 199 ms przy szczycie procesu 36 839 424 bajty
Zobacz też: ApplyStrictParserBudgetPolicy, ResetParserBudgetPolicy, GetLastParserBudgetStatistics, Skalowalne ładowanie z dostępem losowym