境界付き PDF パーサー予算
ドキュメントスコープのパーサー予算は、ホスト的または破損した入力が、トークン構築、集約トークン処理、配列またはディクショナリの拡張、繰り返される不正トークンの前に過剰なリソースを消費するのを止めます
互換性デフォルト
ParserMaxTokenBytesはデフォルトで 67,108,864 バイトParserMaxTotalTokensはロードごとにデフォルトで 10,000,000 トークンParserMaxContainerItemsは配列またはディクショナリごとにデフォルトで 1,000,000 エントリParserMaxBadTokensはロードごとにデフォルトで 64 個の不正トークン
任意の制限をゼロに設定すると、その個別の制限が無効になります
負の値は ERangeError を発生させます
厳格ポリシー
ApplyStrictParserBudgetPolicy は、1 MiB のトークン制限、100,000 の全トークン、10,000 のコンテナエントリ、8 個の不正トークンを選択します
PDF.ApplyStrictParserBudgetPolicy;
try
PDF.LoadFromFile(UntrustedFileName);
except
on E: EHPDFParserBudgetExceeded do
LogParserRejection(E.Limit, E.Observed, E.Maximum);
end;
ResetParserBudgetPolicy は互換性デフォルトを復元します
失敗とテレメトリ
超過した制限は、Limit、Observed、Maximum 値を持つ EHPDFParserBudgetExceeded を発生させます
THPDFParserBudgetLimit は、pblTokenBytes、pblTotalTokens、pblContainerItems、または pblBadTokens を識別します
GetLastParserBudgetStatistics は、設定された制限、トークンと不正トークンのカウント、ピークトークンとコンテナサイズ、違反情報、セッションの有効性を持つ THPDFParserBudgetStatistics スナップショットを返します
予算例外は、最新の解析、従来の解析、クロスリファレンス回復、オブジェクト単位の失敗分離全体で終端的なままです
パフォーマンスゲート
Win32 回帰ゲートは、34,476,032 バイトのプロセスピークで 215 ms で 2 MiB トークンを拒否し、36,839,424 バイトのプロセスピークで 199 ms で 100 万トークンのコンテナを拒否します
関連項目: ApplyStrictParserBudgetPolicy、ResetParserBudgetPolicy、GetLastParserBudgetStatistics、スケーラブルローディング