نموذج تهديدات المحرّك
لمحة سريعة
قسم بعنوان «لمحة سريعة»تُعرّف هذه الصفحة نموذج التهديدات الخاص بمحرك NextPDF الأساسي. وتُعدّد فئات الهجوم التي يضعها المحرك ضمن النطاق عند معالجته مُدخَلات يمكن للمهاجم التأثير فيها: لغة ترميز النص الفائق (HTML)، وصفحات الأنماط المتتالية (CSS)، والرسوميات المتجهية القابلة للتحجيم (SVG)، والخطوط، والصور، وملفات تنسيق المستندات المحمولة (PDF) القائمة. وتبيّن الوضع الافتراضي لكل قدرة من قدرات الموارد الخارجية، وتشير إلى الحارس داخل الشِّفرة الذي يخفّف كل فئة.
الحدّ. يسجّل نموذج التهديدات التهديدات المأخوذة في الحسبان والتخفيفات المطبَّقة عليها. وهو لا يدّعي انعدام الثغرات. والفئة غير المدرجة هنا لا يعني ذلك ثبوت انعدامها؛ فقد تقع خارج النطاق الحالي للنموذج. وقبل إطلاق الميزات غير المنفَّذة، يجب أن تمرّ عبر مراجعة تهديدات رسمية. عامِل هذه الصفحة بوصفها سجلًا لتصميم متعمَّد، لا بوصفها برهانًا أمنيًا.
التثبيت
قسم بعنوان «التثبيت»composer require nextpdf/core:^3آليات الحراسة الموصوفة هنا جزء من الحزمة الأساسية. ولا تحتاج إلى اعتمادية إضافية لتفعيلها؛ فهي مفعَّلة افتراضيًا.
نظرة عامة مفاهيمية
قسم بعنوان «نظرة عامة مفاهيمية»يتّبع النموذج عملية نمذجة التهديدات الخاصة بمشروع أمن التطبيقات العالمي المفتوح (OWASP) (owasp_threat_modeling#x1.x11.p6): تفكيك النظام عند النقاط التي تعبر فيها المدخلات غير الموثوقة حدًّا من حدود الثقة، وتعداد التهديدات عند كل حدّ، وتسجيل وسائل التخفيف.
حدّ الثقة الأساسي للمحرك هو استيعاب المستندات: أيّ موضع يكون فيه محتوى مؤلَّف في مكان آخر — صفحة أنماط بعيدة، أو مصدر @font-face، أو <image href>، أو فاتورة لغة الترميز الموسَّعة (XML) مضمَّنة، أو ملف PDF لفحصه — قادرًا على دفع المحرك إلى جلب البيانات أو تحليلها أو فك ضغطها. المبدأ الحاكم هو المنع افتراضيًا: كل قدرة من قدرات الموارد الخارجية معطَّلة إلى أن تمكّنها صراحةً عبر كائن سياسة. يطبّق هذا خطّ الأساس الخاص بأقل قدر من الوظائف من المعهد الوطني للمعايير والتقنية (NIST) SP 800-53 Rev. 5 CM-7 (nist_sp_800_53r5#x4.x182.p14) على محرك عرض: الإعداد الافتراضي للباني هو الوضع الأكثر تشدّدًا. وفتح أيّ قدرة هو قرارك الصريح.
سطح API
قسم بعنوان «سطح API»نموذج التهديدات ليس واجهة برمجة تطبيقات (API). وكائنات السياسة التي تعبّر عنه موثَّقة في صفحات الوحدات. نقاط الدخول ذات الصلة بالثقة هي عقد سياسة الموارد الخارجية (ExternalResourcePolicyInterface، مع DefaultExternalResourcePolicy بوصفه الإعداد الافتراضي للمنع الكامل) وحارسا محدِّد الموارد الموحَّد (URL) وXML (UrlValidator، XmlGuard). تشير هذه الصفحة إلى سلوكها، ولا تعيد توثيق توقيعاتها.
عيّنة شِفرة — بداية سريعة
قسم بعنوان «عيّنة شِفرة — بداية سريعة»الوضع الآمن هو الافتراضي. ولا تحتاج إلى شِفرة للحصول عليه:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Html\DefaultExternalResourcePolicy;
// Out of the box: @font-face blocked, @import blocked, background-image// blocked, SVG external refs blocked. A document that tries to fetch a// remote resource gets a system-font fallback or an ignored rule — not an// outbound request.$policy = new DefaultExternalResourcePolicy();عيّنة شِفرة — الإنتاج
قسم بعنوان «عيّنة شِفرة — الإنتاج»فتح أيّ قدرة هو إجراء متعمَّد ومحدود النطاق. إذا اضطُررت إلى السماح بخط ويب مُستضاف على شبكة توصيل المحتوى (CDN) عبر بروتوكول نقل النص الفائق الآمن (HTTPS) في الإنتاج، ففعِّله صراحةً وحدِّد نطاقه:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Html\DefaultExternalResourcePolicy;
// Explicit, scoped opt-in. The HTTPS scheme is required; size and glyph// caps still apply; the URL still passes the SSRF guard before any fetch.$policy = (new DefaultExternalResourcePolicy()) ->withFontFaceAllowed(['https']);الحالات الحدّية والمزالق
قسم بعنوان «الحالات الحدّية والمزالق»- غير المنفَّذ ليس مرادفًا للآمن بالمصادفة. قدرات مثل
background-image url()في CSS غير منفَّذة، لذا لا تملك سطح هجوم حاليًا. ومع ذلك فهي موثَّقة بوصفها تتطلّب بوابة تهديدات رسمية قبل أيّ تنفيذ مستقبلي. غياب الشِّفرة هو وسيلة التخفيف اليوم، لا ضمان دائم. - إعادة ربط نظام أسماء النطاقات (DNS) هدف متحرّك. يحلّ
UrlValidatorاسم المضيف ويعيد عنوان بروتوكول الإنترنت (IP) المُحلَّل كي يتمكّن المُستدعي من تثبيت الاتصال (CURLOPT_RESOLVE)، فيغلق نافذة وقت‑الفحص إلى وقت‑الاستخدام (TOCTOU) بين التحقّق والجلب. هذا دفاع وفق أفضل جهد، لا دفاع مطلق. والمشغّل الذي يقف خلف وكيل خروج متساهل لا يزال بإمكانه الوصول إلى مضيفين داخليين لا تستطيع المكتبة رؤيتهم. - بتات الأذونات ليست تحكّمًا في الوصول. المستند الذي “يمنع النسخ” يعتمد على تعاون القارئ، لا على الإنفاذ. يتناول نموذج الأمان ذلك. ويُنوَّه به هنا لأنّه مفهوم خاطئ شائع في نمذجة التهديدات.
الأداء
قسم بعنوان «الأداء»يفشل الحراس بسرعة ويحدّون مقدار العمل: يرفض حارس XML إعلان نوع المستند (DOCTYPE) قبل التحليل ويضع حدًّا أقصى لحجم المدخلات؛ ويفرض مسار الصورة سقفًا بالميغابكسل وسقفًا بالبايت قبل فك الضغط؛ ويرفض حارس URL وفقًا للمخطّط والمضيف قبل فتح أيّ مقبس. الإعداد الافتراضي الآمن يكلّف طلبًا مرفوضًا، لا طلبًا بطيئًا.
ملاحظات أمنية
قسم بعنوان «ملاحظات أمنية»فيما يلي فئات الهجوم المأخوذة في الحسبان وتخفيفاتها داخل الشِّفرة، مع مراجع تعداد نقاط الضعف الشائعة (CWE) وOWASP حيثما تنطبق:
| فئة التهديد (CWE / OWASP) | المتجه في محرك PDF | الحارس داخل الشِّفرة |
|---|---|---|
تزوير الطلبات من جانب الخادم (SSRF) (OWASP Top 10 2025؛ owasp_top10_2025#x3.x1.p26) | @font-face/@import/url() يشير إلى 169.254.169.254 أو مضيف داخلي؛ جالبات سلطة الطابع الزمني (TSA)، وبروتوكول حالة الشهادة عبر الإنترنت (OCSP)، وقائمة إبطال الشهادات (CRL) | UrlValidator::validateExternalUrl() يحجب النطاقات الخاصة والمحجوزة والاسترجاعية والمحلية‑الوصلة ونقاط نهاية بيانات السحابة الوصفية؛ ويرفض المخطّطات الخطرة؛ ويحلّ DNS؛ ويعيد عنوان IP لتثبيت الاتصال |
الكيان الخارجي في XML (XXE) (cwe_top25_2025#x28.x2.p42) | كيانات خارجية أو DOCTYPE في فاتورة XML مضمَّنة أو حزمة منصّة البيانات الوصفية الموسَّعة (XMP) | XmlGuard::loadXml() يفرض LIBXML_NONET، ويرفض أيّ إعلان DOCTYPE رفضًا قاطعًا، ويرفض محارف التحكّم المحظورة في XML 1.0، ويطبّق حدًّا أقصى لحجم المدخلات |
| قنبلة فك الضغط | صورة 1×1 تُخفي حمولة 100 MP؛ ملف Web Open Font Format 2 (WOFF2) مُفرط الحجم | يفرض مسار الصورة سقفًا بالميغابكسل وحدًّا أقصى بالبايت قبل فك الضغط؛ ويضع مسار الخط حدًّا أقصى لحجم الملف وعدد المحارف الرسومية |
| اجتياز المسارات | file:///etc/passwd عبر src في خط أو SVG | الموارد الخارجية ممنوعة كليًا افتراضيًا؛ ومسارات الملفات المحلية تُحلّ عبر realpath() مقابل قائمة سماح للدلائل عند تمكينها صراحةً |
| حقن المحتوى | سلسلة مصاغة بعناية تنفلت من معامل PDF؛ data:/javascript: في href | تهريب سلاسل PDF عند الإصدار؛ قائمة سماح للمخطّطات وتطهير href في التعليقات التوضيحية |
تجتمع الإعدادات الافتراضية لتشكّل وضع منع كامل للموارد الخارجية: تبقى الخطوط، و@import، وصورة الخلفية، والمراجع الخارجية في SVG معطَّلة إلى أن تختار تفعيلها لكل مخطّط، كما هو موضّح في مصفوفة تغطية الخصائص الأمنية المصانة جنبًا إلى جنب مع الشِّفرة.
توثّق هذه الصفحة التهديدات المأخوذة في الحسبان. وهي ليست تقرير اختبار اختراق، ولا تدّعي أنّ التخفيفات المدرجة كاملة أو أنّه لا تنطبق أيّ فئة ضعف أخرى.
المطابقة
قسم بعنوان «المطابقة»هذا ليس ملفًا تعريفيًا للمطابقة. يسترشد نموذج التهديدات بعملية نمذجة التهديدات الخاصة بـ OWASP وتصنيف نقاط الضعف CWE Top 25 (cwe_top25_2025#x28.x2.p42)؛ وهو لا يدّعي المطابقة لأيّ مخطّط لشهادات الأمن. يندرج التقييم المستقل ضمن تدقيق، لا ضمن هذا المستند.