Rozpočty skriptů formulářů
Rozpočty skriptů formulářů omezují rozsah vyhodnocení JavaScriptu a FormCalc ve formulářích načtených z nedůvěryhodných PDF
Omezené zdroje
Konfigurace řídí maximální bajty skriptu, příkazů, operací, hloubku parseru, argumenty, položky polí, délku řetězců a celkovou velikost sledovaných hodnotTHotPDF.FormScriptBudgets drží sadu rozpočtů aplikovanou EvaluateLoadedFieldJavaScript a každým průchodem přepočtu. Záznam THPDFScriptBudgets zpřístupňuje MaxScriptLength, MaxStatements, MaxExpressionDepth, MaxOperations, MaxElapsedMilliseconds ( cutoff podle wall-clock CPU), MaxValueBytes (strop jediné hodnoty), MaxTotalValueBytes (kumulativní paměť) a MaxOutputBytes (strop generovaného výstupu); nula v kterémkoli poli daný limit zruší
var
Budgets: THPDFScriptBudgets;
begin
Budgets:= PDF.FormScriptBudgets;
Budgets.MaxElapsedMilliseconds:= 100;
Budgets.MaxTotalValueBytes:= 1024* 1024;
PDF.FormScriptBudgets:= Budgets;
end;
Vymáhání a telemetrie
Limit CPU se kontroluje průběžně, jak přibývají operace i bajty hodnot, takže ho skript neobejde samotnou alokací; kumulativní paměťový rozpočet zachytí skripty, které alokují a zahazují spoustu malých hodnot. Překročení ukončí vyhodnocení chybou s popisným ErrorText a záznam výsledku vedle počtu operací hlásí i telemetrii ElapsedMilliseconds a ValueBytes
Překročení limitu ukončí vyhodnocení s určeným diagnostickým stavem a nezveřejní částečnou změnu hodnoty pole