Budget limitati del parser PDF
I budget del parser con ambito di documento fermano input ostile o danneggiato prima che la costruzione dei token, il lavoro aggregato sui token, la crescita di array o dizionari o token malformati ripetuti consumino risorse eccessive
Default di compatibilità
ParserMaxTokenBytesvale 67.108.864 byte per defaultParserMaxTotalTokensvale 10.000.000 token per caricamento per defaultParserMaxContainerItemsvale 1.000.000 voci per array o dizionario per defaultParserMaxBadTokensvale 64 token malformati per caricamento per default
Impostare un limite qualsiasi a zero per disattivare quel singolo limite
I valori negativi sollevano ERangeError
Politica strict
ApplyStrictParserBudgetPolicy seleziona un limite di token da 1 MiB, 100.000 token totali, 10.000 voci di contenitore e 8 token malformati
PDF.ApplyStrictParserBudgetPolicy;
try
PDF.LoadFromFile(UntrustedFileName);
except
on E: EHPDFParserBudgetExceeded do
LogParserRejection(E.Limit, E.Observed, E.Maximum);
end;
ResetParserBudgetPolicy ripristina i default di compatibilità
Fallimenti e telemetria
Un limite superato solleva EHPDFParserBudgetExceeded con valori Limit, Observed e Maximum
THPDFParserBudgetLimit identifica pblTokenBytes, pblTotalTokens, pblContainerItems o pblBadTokens
GetLastParserBudgetStatistics restituisce uno snapshot THPDFParserBudgetStatistics con i limiti configurati, i conteggi di token e token malformati, le dimensioni di picco di token e contenitori, le informazioni sul superamento e la validità della sessione
Le eccezioni di budget restano terminali attraverso il parsing moderno, il parsing tradizionale, il recupero delle cross-reference e l'isolamento dei fallimenti per oggetto
Gate di prestazioni
Il gate di regressione Win32 rifiuta un token da 2 MiB in 215 ms con un picco di processo di 34.476.032 byte e rifiuta un contenitore da un milione di token in 199 ms con un picco di processo di 36.839.424 byte
Vedi anche: ApplyStrictParserBudgetPolicy, ResetParserBudgetPolicy, GetLastParserBudgetStatistics, Caricamento scalabile