有界 PDF 解析器预算

文档范围的解析器预算在令牌构造、聚合令牌工作、数组或字典增长或重复畸形令牌消耗过多资源之前阻止恶意或损坏的输入

兼容性默认值

将任何限制设为零以禁用该单独限制

负值抛出 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 拒绝一百万个令牌的容器

另请参阅: ApplyStrictParserBudgetPolicy、ResetParserBudgetPolicy、GetLastParserBudgetStatistics、可扩展加载