งบประมาณสคริปต์ฟอร์ม
การประเมินสคริปต์ฟอร์มทุกครั้งทำงานภายใต้งบประมาณเข้มงวดครอบคลุมเวลา CPU หน่วยความจำ ความลึกการเรียกซ้ำ จำนวนคำสั่งและการทำงาน และเอาต์พุตที่สคริปต์สามารถสร้าง เพื่อให้การคำนวณที่หลุดการควบคุมไม่สามารถหยุดการผ่านการคำนวณใหม่หรือทำให้หน่วยความจำหมด
THPDFScriptBudgets
THotPDF.FormScriptBudgets ถือชุดงบประมาณที่ EvaluateLoadedFieldJavaScript และทุกการผ่านการคำนวณใหม่ใช้ ระเบียน THPDFScriptBudgets เปิดเผย MaxScriptLength, MaxStatements, MaxExpressionDepth, MaxOperations, MaxElapsedMilliseconds (การตัดทอน CPU แบบ wall-clock), MaxValueBytes (เพดานค่าเดียว), MaxTotalValueBytes (หน่วยความจำสะสม) และ MaxOutputBytes (เพดานเอาต์พุตที่สร้าง) ค่าเป็นศูนย์ในฟิลด์ใดยกขีดจำกัดเฉพาะนั้น
var
Budgets: THPDFScriptBudgets;
begin
Budgets:= PDF.FormScriptBudgets;
Budgets.MaxElapsedMilliseconds:= 100;
Budgets.MaxTotalValueBytes:= 1024* 1024;
PDF.FormScriptBudgets:= Budgets;
end;
การบังคับใช้และ telemetry
การตัด CPU ถูกตรวจสอบในขณะที่การทำงานและไบต์ค่าสะสม เพื่อให้สคริปต์ไม่สามารถเลี่ยงมันได้ผ่านการจัดสรรอย่างเดียว งบประมาณหน่วยความจำสะสมจับสคริปต์ที่จัดสรรและละทิ้งค่าขนาดเล็กจำนวนมาก การละเมิดทำให้การประเมินล้มเหลวด้วย ErrorText ที่บรรยายและระเบียนผลลัพธ์รายงาน telemetry ElapsedMilliseconds และ ValueBytes ควบคู่กับจำนวนการทำงาน
งบประมาณค่าเริ่มต้นเก็บขีดจำกัดเชิงประวัติศาสตร์ (สคริปต์ 8192 ไบต์ 32 คำสั่ง ความลึก 32 1024 การทำงาน 256 KB ต่อค่า) และเพิ่มการตัด CPU 500 ms งบประมาณหน่วยความจำสะสม 4 MB และเพดานเอาต์พุต 64 KB