Enterprise الإصدار
التحليل الجنائي
لمحة سريعة
قسم بعنوان «لمحة سريعة»يقرأ «التحليل الجنائي» في NextPDF Enterprise تاريخ التحديث التدريجي لملف PDF ويُنتج تقريرًا مُنظَّمًا للقراءة فقط بالمراجعات والأحداث المُصنَّفة والتغييرات لكل كائن. ويدعم مسارات التحليل الجنائي. وهو ليس ختمًا مقاومًا للعبث ولا يؤكّد أن مستندًا أصيل أو غير مُعدَّل.
التوفّر والترخيص
قسم بعنوان «التوفّر والترخيص»تُشحَن هذه القدرة في NextPDF Enterprise (nextpdf/enterprise) وتُفعَّل بمظروف ترخيص من درجة Enterprise. ولا يُحمِّل نشرٌ دون ذلك الاستحقاق أصناف القدرة. قارِن الإصدارات واحصل على ترخيص.
التثبيت
قسم بعنوان «التثبيت»composer require nextpdf/enterprise:^3نظرة مفاهيمية
قسم بعنوان «نظرة مفاهيمية»يمكن تحديث ملف PDF بإلحاق التغييرات بنهاية الملف بدلًا من إعادة كتابته. ويضيف كل تحديث قسم مرجع تقاطعي جديدًا ومُذيّلًا جديدًا، وتُترَك البايتات الأصلية في مكانها — ISO 32000-2:2020 §7.5.6. وعند تغيير كائن، يُلحِق التحديث نسخةً جديدة ويسجّل قسم المرجع التقاطعي للتحديث إزاحة بايت تُلغي الإزاحة الأقدم؛ ويَحلّ القارئ النسخة الأحدث — ISO 32000-2:2020 §7.5.6. وقد تُعدِّل التحديثات اللاحقة بنية الملف الأولية — ISO 32000-2:2020 §7.5.4. ويَسرُد قسم المرجع التقاطعي للتحديث الكائنات التي أُضيفت أو عُدِّلت أو حُذِفت في ذلك التحديث فقط — ISO 32000-2:2020 §7.5.5.
يقرأ المُحلِّل هذه البنية الطبقية. ويحلّل جدول المرجع التقاطعي لكل مراجعة، ويشتقّ حدود بايتات المراجعة، ويقارن مدخلات كل مراجعة بالمراجعة الأقدم التالية لتصنيف كل كائن مُضافًا أو مُعدَّلًا أو محذوفًا. ثم يجمّع تغييرات الكائنات في أحداث أعلى مستوى: أُضيف توقيع، أو حُدِّث فهرس المستند، أو ظهر قاموس تشفير، أو أُضيفت مجموعة كائنات أو عُدِّلت أو أُزيلت. والمخرَج كائن تقرير واحد يحمل عدد المراجعات، والحجم الإجمالي، وقائمة ملخّص لكل مراجعة، وخطًّا زمنيًّا مُصنَّفًا للأحداث، وقائمة التغييرات لكل كائن.
المُحلِّل للقراءة فقط. ويكتشف وجود مراجعة توقيع من علامات بنيوية؛ وهو لا يتحقق من أي توقيع، ولا يعيد حساب أي ملخّص، ولا يفحص أي شهادة. والتحقق من التوقيع قدرة Core منفصلة. والتقرير المُنتَج وصف بنيوي لتاريخ التحديث كما حُلِّل؛ وهو ليس تقريرًا بأن مستندًا أصيل، أو أن تغييرًا كان غير مُصرَّح به، أو أن كل تعديل قد اكتُشِف. عامِل التقرير بوصفه كشف دلالة عبث كما اختُبِر مقابل رؤية المُحلِّل لسلسلة المراجعات، لا ضمانًا جنائيًّا ولا تصديقًا مقبولًا في المحكمة.
لماذا يعمل بهذه الطريقة
قسم بعنوان «لماذا يعمل بهذه الطريقة»يتوقف المُحلِّل عند البنية عمدًا. فهو يبلّغ بما تحتويه سلسلة المراجعات، ولا يؤكّد أبدًا أن تغييرًا كان مُصرَّحًا به أو أن توقيعًا صالح. فالحضور البنيوي والصلاحية التشفيرية ادّعاءان مختلفان؛ ودمجهما يجعل مستدعيًا يخلط بين دلالة العبث والضمان. ولذلك تبقى صلاحية التوقيع في سطح توقيع Core الوحيد، الذي يتركّب معه «التحليل الجنائي» بدلًا من تكراره. والتقرير بيانات وصفية بنيوية قابلة للتسلسل بـ JSON، فيستوعب SIEM تاريخ التحرير دون المساس بمحتوى المستند. خلفية التصميم: التحديثات التدريجية ولماذا تهمّ.
سطح واجهة البرمجة
قسم بعنوان «سطح واجهة البرمجة»| النوع | الصنف | الدور | الاستقرار | منذ |
|---|---|---|---|---|
ForensicAnalyzer | class | يحلّل ملف PDF ويُرجِع تقريرًا جنائيًّا (الثابتة analyze) | stable | 1.10.0 |
ForensicReport | class | نتيجة التحليل؛ JsonSerializable للتصدير إلى SIEM | stable | 1.10.0 |
RevisionSummary | class | حقائق لكل مراجعة: عدد الكائنات، والحجم، وحدود البايتات، ورايات الحضور | stable | 1.10.0 |
ForensicEvent | class | حدث مُصنَّف واحد مع قائمة كائنات متأثّرة | stable | 1.10.0 |
ForensicEventType | enum | فئات الأحداث (أُضيف توقيع، حُدِّث الفهرس، أُضيفت كائنات، وغيرها) | stable | 1.10.0 |
ObjectChange | class | سجل تغيير كائن واحد عبر مراجعتين | stable | 1.10.0 |
ObjectChangeType | enum | مُضاف أو مُعدَّل أو محذوف | stable | 1.10.0 |
يعرض ForensicReport الدوال hasIncrementalUpdates() وhasAnySignature() وgetEventsByType() وgetChangesForRevision() وjsonSerialize(). وراية hasSignature على ملخّص مراجعة إشارة حضور بنيوي، لا نتيجة صلاحية.
نموذج شيفرة — بداية سريعة
قسم بعنوان «نموذج شيفرة — بداية سريعة»<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Forensics\ForensicAnalyzer;
/** * Produce a forensic report from PDF bytes. * * @param string $pdfData Raw PDF file bytes. * * @return array{revisions: int, incremental: bool, signedRevisionPresent: bool} */function inspect(string $pdfData): array{ $report = ForensicAnalyzer::analyze($pdfData);
return [ 'revisions' => $report->revisionCount, 'incremental' => $report->hasIncrementalUpdates(), 'signedRevisionPresent' => $report->hasAnySignature(), ];}يبلّغ hasAnySignature() بأن مراجعة توقيع حاضرة في البنية. وهو لا يذكر أن التوقيع صالح.
نموذج شيفرة — الإنتاج
قسم بعنوان «نموذج شيفرة — الإنتاج»<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Forensics\ForensicAnalyzer;use NextPDF\Enterprise\Forensics\ForensicEventType;use Psr\Log\LoggerInterface;
final readonly class RevisionAuditor{ public function __construct(private LoggerInterface $logger) {}
/** * Analyze a document and emit a structural JSON record for the SIEM. * * @param string $pdfData The PDF bytes to inspect. * * @return string A JSON forensic report (no document content). */ public function audit(string $pdfData): string { try { $report = ForensicAnalyzer::analyze($pdfData);
$this->logger->info('Forensic analysis complete', [ 'revisions' => $report->revisionCount, 'sizeBytes' => $report->totalSizeBytes, 'signatureAddedEvents' => count( $report->getEventsByType(ForensicEventType::SignatureAdded), ), ]);
return json_encode($report, JSON_THROW_ON_ERROR); } catch (\Throwable $e) { $this->logger->error('Forensic analysis failed', ['error' => $e->getMessage()]);
throw $e; } }}يحمل سجل التسجيل أعدادًا وأحجامًا فقط. وهو لا يحمل نص مستند. وتعيد كتلة الالتقاط رفع الاستثناء؛ وهي لا تبتلع إخفاق تحليل.
الحالات الحدّية والمزالق
قسم بعنوان «الحالات الحدّية والمزالق»- ليس لمستند ذي مراجعة واحدة تاريخ تدريجي. وقائمة التغييرات فارغة؛ وهذا ليس دليلًا على الأصالة.
- يعني حدث
SignatureAddedأن مراجعة توقيع حاضرة بنيويًّا. وهو ليس نتيجة صلاحية توقيع. تحقّق من التوقيع بسطح توقيع Core. - إعادة استخدام الكائنات أمر معتاد: يحتفظ كائن مُحدَّث برقم كائنه وتُلحَق نسخة جديدة. ويبلّغ المُحلِّل بذلك بوصفه
Modified، لا إزالةً وإعادة إنشاء. - تصنيف
Deletedانتقال مدخل حرّ في سلسلة المرجع التقاطعي. وقد يَحلّ قارئ نسخةً أقدم من ذلك الكائن؛ والحذف على مستوى البنية ليس ضمانًا بعدم القابليّة للاسترداد. - يبلّغ المُحلِّل بما رصده المُحلِّل. وقد يُنتج مستند مُصمَّم لإرباك مُحلِّل تقريرًا لا يطابق رؤية أداة أخرى. والتقرير ليس ادّعاءً بأن كل تعديل قد اكتُشِف.
- المُدخَل محدود. ويفشل مستند مفرط الحجم أو مفرط عدد المراجعات بإحكام باستثناء تحليل مُمَيَّع النوع بدلًا من استهلاك ذاكرة غير محدودة.
الأداء
قسم بعنوان «الأداء»تتناسب كلفة التحليل مع عدد المراجعات وعدد الكائنات، لا مع تعقيد الصفحة المُصيَّرة. وتغطّي ميزانية الجدار البالغة 1500 ms مستندًا تجاريًّا متعدّد المراجعات نموذجيًّا. وملف إعادة الإنتاج هو structural: فالتقرير حتمي لمُدخَل معيَّن، لكن إزاحات البايتات المطلقة تعكس الملف المُدخَل بالضبط وليست قابلة للنقل عبر النسخ المُعاد حفظها.
ملاحظات أمنية
قسم بعنوان «ملاحظات أمنية»المُحلِّل للقراءة فقط ولا يكتب أبدًا إلى المُدخَل. وهو سطح تحليلي، لا تحويلي. ويكتشف وجود علامات توقيع وتشفير لكنه لا يؤدّي أي عملية تشفير، فلا يقدّم أي ادّعاء FIPS. ويصف التقرير تاريخ التحديث المُحلَّل؛ وهو ليس تأكيد أصالة ويجب ألّا يُقدَّم بوصفه مقاومًا للعبث أو مضمونًا جنائيًّا أو مقبولًا في المحكمة. ويستخلص المُشغِّل الاستنتاجات؛ وتبلّغ المكتبة بالبنية.
إقامة البيانات وتخفيفات البيانات الشخصية
قسم بعنوان «إقامة البيانات وتخفيفات البيانات الشخصية»يعمل التحليل داخل العملية على المضيف الذي يحمل ملف PDF. ولا يغادر أي محتوى مستند المضيف. ويحمل التقرير أرقام الكائنات، وفهارس المراجعات، والأحجام، وحدود البايتات، وفئات الأحداث — بيانات وصفية بنيوية، لا نص مستند ولا بيانات شخصية مُكتشَفة. وما إذا كان ملف PDF المُدخَل أو التقرير نفسه يحتوي بيانات شخصية، وأين يُخزَّن كلٌّ منهما، مسؤولية نشر خارج حدّ المكتبة.
قياسات آمنة وتنقية السجلات
قسم بعنوان «قياسات آمنة وتنقية السجلات»ترفع المكتبة استثناءات مُمَيَّعة النوع برسائل بنيوية ولا تضع بايتات مستند في نص الاستثناء. ويجب على نشر يسجّل حول التحليل أن يسجّل أعداد التقرير وفئاته — كما يُبيِّن نموذج الإنتاج — وألّا يسجّل حِمولة PDF الخام في السجلات أو في خلفية APM. وتقرير JSON هو الأثر الآمن لإعادة توجيهه إلى SIEM.
سلوك وضع FIPS
قسم بعنوان «سلوك وضع FIPS»لا تجري أي عملية تشفير في هذه الوحدة، فلا يوجد سلوك خاصّ بوضع FIPS. والتحقق من التوقيع، وهو تشفيري، قدرة Core منفصلة ومُوثَّقة هناك.
المطابقة
قسم بعنوان «المطابقة»| الادّعاء | المعيار | البند |
|---|---|---|
| تُلحِق التحديثات اللاحقة عناصر إضافية بنهاية الملف؛ وتُعدِّل التحديثات اللاحقة البنية الأصلية. | ISO 32000-2:2020 | §7.5.6 |
| يُلحَق كائن مُحدَّث بوصفه نسخةً جديدة ويُلغي مدخل المرجع التقاطعي للتحديث إزاحة البايت الأقدم؛ ويَحلّ القارئ النسخة الأحدث. | ISO 32000-2:2020 | §7.5.6 |
| قد تُعدِّل التحديثات اللاحقة بنية الملف الأولية. | ISO 32000-2:2020 | §7.5.4 |
| يحتوي قسم المرجع التقاطعي للتحديث مدخلات للكائنات المُضافة أو المُعدَّلة أو المحذوفة فقط. | ISO 32000-2:2020 | §7.5.5 |
| يسجّل قاموس التوقيع ما هو موقَّع. | ISO 32000-2:2020 | §12.8.1 |
| يحدّد ByteRange مدى البايتات الذي يغطّيه التوقيع (التحقق من التوقيع قدرة Core منفصلة). | ISO 32000-2:2020 | §12.8.1 |
| يحتفظ مخزن أمان المستند بمادة التحقق طويل الأمد في مراجعة لاحقة. | ISO 32000-2:2020 | §12.8.4 |
كل البنود مُلخَّصة. ولا يُعيد NextPDF إنتاج نص معياري. راجِع المعيار المنشور للصياغة الموثوقة. ولا يدّعي NextPDF أي اعتماد جنائي؛ ويصف التقرير بنية التحديث المُحلَّلة، لا تقريرًا مُعتمَدًا بسلامة المستند.
عقد السلوك
قسم بعنوان «عقد السلوك»- المُحلِّل للقراءة فقط: إذ لا يكتب أبدًا إلى المستند المُدخَل ولا يؤدّي أي عملية تشفير.
- يحلّل جدول المرجع التقاطعي لكل مراجعة، ويشتقّ حدود بايتات المراجعة، ويصنّف كل كائن مُضافًا أو مُعدَّلًا أو محذوفًا، ثم يجمّع التغييرات في خطّ زمني مُصنَّف للأحداث.
- يعني حدث
SignatureAddedأن مراجعة توقيع حاضرة بنيويًّا؛ وهو ليس نتيجة صلاحية توقيع — والتحقق قدرة Core منفصلة. - لمستند ذي مراجعة واحدة قائمة تغييرات فارغة (لا دليل على الأصالة)؛ وتصنيف
Deletedانتقال مدخل حرّ، لا ضمان بعدم القابليّة للاسترداد. - المُدخَل محدود: ويفشل مستند مفرط الحجم أو مفرط عدد المراجعات بإحكام باستثناء تحليل مُمَيَّع النوع. والتقرير كشف دلالة عبث كما اختُبِر، لا ضمان جنائي ولا تصديق مقبول في المحكمة.
حدّ المحتوى المنشور
قسم بعنوان «حدّ المحتوى المنشور»توثّق هذه الصفحة السلوك القابل للرصد خارجيًّا وسطح واجهة البرمجة العام المدعوم فقط. ومسارات النطاقات الداخلية، والأصناف المساعدة، وجداول الآليات، وأسماء ملفات أدلّة التشغيل، وبادئات التذاكر خارج النطاق.
احتياطي Core
قسم بعنوان «احتياطي Core»NextPDF Core (Apache-2.0) لا يملك مُحلِّلًا جنائيًّا لتاريخ المراجعات — لا شيء؛ ولهذه القدرة لا مكافئ في درجة Core. ويوفّر Core سطح التحقق الموثوق من التوقيع، الذي يتركّب معه المُحلِّل لكنه لا يحلّ محلّه.
احتياطي Pro
قسم بعنوان «احتياطي Pro»NextPDF Pro لا يملك مُحلِّلًا جنائيًّا لتاريخ المراجعات — لا شيء؛ ولهذه القدرة لا مكافئ في درجة Pro. ويُشحَن الإبلاغ بالمراجعات والتغييرات لكل كائن للقراءة فقط وتقرير SIEM القابل للتسلسل بـ JSON في حزمة nextpdf/enterprise فقط.
ملاحظة حدّ Enterprise
قسم بعنوان «ملاحظة حدّ Enterprise»يُوصَف مُحلِّل المراجعات، وتصنيف التغييرات، والخطّ الزمني للأحداث على مستوى السلوك. وبواطن المُحلِّل وأي تفصيل تصنيف داخلي خارج نطاق السطح العام. وصلاحية التوقيع ليست في النطاق هنا عمدًا — فهي مسؤولية سطح توقيع Core.
حدّ النشر
قسم بعنوان «حدّ النشر»يعمل التحليل داخل العملية على المضيف الذي يحمل ملف PDF؛ ولا يغادر أي محتوى مستند المضيف. وما إذا كان ملف PDF المُدخَل أو التقرير يحتوي بيانات شخصية، وأين يُخزَّن كلٌّ منهما، مسؤولية نشر خارج حدّ المكتبة. ويستخلص المُشغِّل الاستنتاجات من التقرير؛ وتبلّغ المكتبة بالبنية ولا تؤكّد أصالة المستند.
حدّ الامتثال القانوني
قسم بعنوان «حدّ الامتثال القانوني»لا تنطبق أي قيود ضوابط تصدير على سطح التحليل الجنائي. ويجب ألّا يُقدَّم التقرير بوصفه مقاومًا للعبث أو مضمونًا جنائيًّا أو مقبولًا في المحكمة. وهذه الوثيقة ليست رأيًا قانونيًّا؛ استشِر مستشاريك في الامتثال والشؤون القانونية.
انظر أيضًا
قسم بعنوان «انظر أيضًا»- التحليل الجنائي — المرجع المفصَّل — اشتقاق حدود المراجعات وقواعد تصنيف تغييرات الكائنات.
- توقيع Core — سطح التحقق الموثوق من التوقيع.
- حزم الأدلّة — أصول مخرَجات سلسلة العُهدة.
- NextPDF Enterprise — سطح ميزات Enterprise كاملًا.
- Core AST — نموذج المستند المُحلَّل.
- التحديث التدريجي · جدول المرجع التقاطعي · DSS — مصطلحات المسرد.