Orçamentos de analisador PDF limitados
Orçamentos de analisador com escopo de documento impedem que entrada hostil ou danificada consuma recursos excessivos antes da construção de token, trabalho agregado de token, crescimento de array ou dicionário ou tokens malformados repetidos
Padrões de compatibilidade
ParserMaxTokenBytestem como padrão 67.108.864 bytesParserMaxTotalTokenstem como padrão 10.000.000 tokens por carregamentoParserMaxContainerItemstem como padrão 1.000.000 entradas por array ou dicionárioParserMaxBadTokenstem como padrão 64 tokens malformados por carregamento
Defina qualquer limite como zero para desabilitar aquele limite individual
Valores negativos geram ERangeError
Política estrita
ApplyStrictParserBudgetPolicy seleciona um limite de token de 1 MiB, 100.000 tokens totais, 10.000 entradas de contêiner e 8 tokens malformados
PDF.ApplyStrictParserBudgetPolicy;
try
PDF.LoadFromFile(UntrustedFileName);
except
on E: EHPDFParserBudgetExceeded do
LogParserRejection(E.Limit, E.Observed, E.Maximum);
end;
ResetParserBudgetPolicy restaura os padrões de compatibilidade
Falha e telemetria
Um limite violado gera EHPDFParserBudgetExceeded com valores Limit, Observed e Maximum
THPDFParserBudgetLimit identifica pblTokenBytes, pblTotalTokens, pblContainerItems ou pblBadTokens
GetLastParserBudgetStatistics retorna um instantâneo THPDFParserBudgetStatistics com limites configurados, contagens de token e token malformado, tamanhos de pico de token e contêiner, informações de violação e validade de sessão
Exceções de orçamento permanecem terminais na análise moderna, análise tradicional, recuperação de referência cruzada e isolamento de falha por objeto
Portão de desempenho
O portão de regressão Win32 rejeita um token de 2 MiB em 215 ms com pico de processo de 34.476.032 bytes e rejeita um contêiner de um milhão de tokens em 199 ms com pico de processo de 36.839.424 bytes
Veja também: ApplyStrictParserBudgetPolicy, ResetParserBudgetPolicy, GetLastParserBudgetStatistics, Scalable Loading