لماذا يحمل ملف PDF نصوصًا برمجية أصلًا
يدعم PDF لغة JavaScript منذ Acrobat 3. هي ما يجعل النموذج يجمع عمودًا، أو يرفض تاريخًا مكتوبًا خطأ، أو يعطّل حقلًا حتى تُعلَّم خانة. وهي أيضًا ما يجعل ملف PDF الخبيث جديرًا بأن يُرسَل.
معظم الأدوات التي تدّعي كشف JavaScript في PDF تنظر في /Names /JavaScript فقط، وهو مخزن مستوى المستند، وفي نموذج عمل حقيقي يكون فارغًا في الغالب. أما الشيفرة المهمة فمرتبطة بحقول بعينها.
كل المواضع التي تُفحص
/Names /JavaScript— شجرة أسماء على مستوى المستند. إنها شجرة لا قائمة، فالأداة التي تقرأ المصفوفة الجذرية وحدها لا تجد شيئًا في ملف مليء بالنصوص./OpenAction— يعمل لحظة فتح المستند قبل أن تقرأ كلمة واحدة.- الإجراءات الإضافية للمستند — قبل الإغلاق، وقبل الحفظ وبعده، وقبل الطباعة وبعدها.
- إجراءات الصفحة — عند فتح الصفحة وإغلاقها.
- إجراءات التعليقات — إجراء
/Aلرابط أو زر، إضافةً إلى دخول الفأرة وخروجها والضغط والإفلات واكتساب التركيز وفقدانه. - إجراءات حقول النماذج — ضغط المفاتيح والتنسيق والتحقق والحساب. هنا تقع فعليًا شيفرة أي نموذج يقوم بعمل ما.
/AcroForm /CO— ترتيب الحساب الذي يحدّد أي المجموعين المتعالقين يفوز.
تُتابَع سلاسل الإجراءات عبر /Next، لأن من يتوقف عند الحلقة الأولى يقرأ الجزء غير المؤذي ويفوته ما تُسلّمه.
ملاحظات لا أحكام
استدعاءات مثل app.launchURL وthis.submitForm وthis.exportDataObject وNet.HTTP وeval وسلاسل الهروب الطويلة \uNNNN تُعلَّم بوصفها أسبابًا لقراءة النص، لا دليلًا على شيء: فنموذج المصروفات المشروع يستدعي submitForm، والقالب المشروع يستدعي util.printf. العلامة تدلّك على موضع النظر فحسب.
لا يُنفَّذ شيء
تُقرأ النصوص من مخطط الكائنات كنص عادي وتُعرض. لا تُقيَّم أبدًا ولا تُحقَن في الصفحة ولا تُجلب عبر الشبكة. انسخ واحدًا، أو احفظه بصيغة .js، أو خذها كلها في أرشيف ZIP مع تقرير JSON.
الخصوصية
يُحلَّل الملف بالكامل داخل متصفحك ولا يُرفع أبدًا، وهو ما يهم تحديدًا حين يكون الملف الذي تفحصه هو الملف الذي لا تثق به.
Tiny Online Tools







