有界 PDF 解析器預算

文件範圍的解析器預算會在 token 建構、彙總 token 工作、陣列或字典成長、或重複的畸形 token 消耗過多資源之前,擋下惡意或損毀的輸入

相容性預設值

把任一上限設為 0 可停用該項限制

負值會丟出 ERangeError

嚴格原則

ApplyStrictParserBudgetPolicy 選用 1 MiB token 上限、100,000 總 token 數、10,000 容器項目與 8 個畸形 token

PDF.ApplyStrictParserBudgetPolicy;
try
  PDF.LoadFromFile(UntrustedFileName);
except
  on E: EHPDFParserBudgetExceeded do
    LogParserRejection(E.Limit, E.Observed, E.Maximum);
end;

ResetParserBudgetPolicy 還原相容性預設值

失敗與遙測

上限被突破時丟出 EHPDFParserBudgetExceeded,附 Limit、Observed 與 Maximum 值

THPDFParserBudgetLimit 標示 pblTokenBytes、pblTotalTokens、pblContainerItems 或 pblBadTokens

GetLastParserBudgetStatistics 回傳 THPDFParserBudgetStatistics 快照,包含設定的上限、token 與畸形 token 數量、峰值 token 與容器大小、突破資訊與工作階段有效性

預算例外在現代解析、傳統解析、交叉參考復原與逐物件失敗隔離之間都視為終結

效能閘

Win32 回歸閘在程序峰值 34,476,032 位元組下於 215 ms 內拒絕 2 MiB token,在程序峰值 36,839,424 位元組下於 199 ms 內拒絕百萬 token 容器

另請參閱: ApplyStrictParserBudgetPolicy, ResetParserBudgetPolicy, GetLastParserBudgetStatistics, 可擴充載入