إنتقل إلى المحتوى الرئيسي
الإصدار: v0.21

واجهة التقارير والنتائج

تعيد Scanner::run() تقرير stdClass بعد فحص مكتمل. تعيد Scanner::getReport() شكل التقرير الحالي نفسه. عند فشل فحص تم التقاطه، تعيد run() القيمة false؛ افحص getLastError() على نسخة الفاحص.

عقد التقرير عالي المستوى

الخاصيةالنوعالمعنى
scannedintعدد الملفات المفحوصة.
detectedintعدد مطابقات البرامج الخبيثة المكتشفة.
verifiedByChecksumintعدد الملفات المقبولة عبر التحقق من المجموع الاختباري.
removed, ignored, edited, quarantine, whitelistarrayالمسارات أو السجلات المتأثرة بالإجراء المطابق.
infectedFoundarrayمسارات الملفات المصابة التي عُثر عليها أثناء الفحص.
fileHashesarrayبيانات تعريف تجزئة الملفات المجمعة أثناء الفحص.
findingsarrayسجلات النتائج الأساسية من تحليلات الملفات والسلامة والأرشيف والتحليلات التكميلية.
coveragearrayالاكتمال والأعداد وأسباب التخطي.
diagnosticsarray، عند وجودهأخطاء غير قاتلة في التحليل أو تحديث التعريفات.
signature_indexesarrayبيانات تعريف فهارس السمعة المضمّنة والاختيارية.
inventoryarray، عند وجودهمخزون مكونات المنصة المكتشفة.

قد تضاف حقول تقرير جديدة في إصدار ثانوي. ينبغي للمستهلكين قراءة الحقول التي يحتاجونها وتحمل الحقول غير المعروفة واستخدام isset() للخصائص الاختيارية.

معالجة النجاح والفشل

$report = $scanner->run();

if ($report === false) {
throw new RuntimeException($scanner->getLastError() ?: 'Scan failed.');
}

foreach ($report->findings as $finding) {
if ($finding['severity'] === 'danger') {
// Send the finding to your incident workflow.
}
}

لا تعامل عددا غير صفري في detected بوصفه فشل تنفيذ. تحدد النتائج شيفرة أو حالات سلامة تحتاج إلى مراجعة. وهي لا تثبت النية ولا تخول الحذف.

عقد سجل النتيجة

تتضمن كل نتيجة أساسية هذه الحقول:

الحقلالنوعالمعنى
idstringمعرّف SHA-256 ثابت مشتق من النوع والموفر ومعرّف القاعدة والموضوع الموحّد.
kindstringفئة النتيجة، مثل malware أو integrity أو نوع تحليل تكميلي.
subjectstringمسار الملف أو الموضوع المفحوص.
rule_idstringمعرّف ثابت للقاعدة أو المؤشر الكاشف.
severitystringالشدة التي يوفرها الكاشف، وعادة warn أو danger.
messagestringتفاصيل اكتشاف قابلة للقراءة البشرية.
statusstringحالة النتيجة الحالية. تبدأ النتائج الجديدة بحالة open.
evidencearrayسياق مثل line أو match أو content_hash عند توفره.
providerstringمصدر الكاشف، مثل builtin.
first_seen_at, last_seen_atstringطوابع زمنية ISO 8601 لملاحظة النتيجة.

احتفظ بـ rule_id وsubject وتجزئة المحتوى الملحوظة عند إزالة تكرار التنبيهات. يمكن أن يتغير رقم السطر أو المقتطف عندما يتغير ملف.

التغطية جزء من النتيجة

يتضمن التقرير أعداد التغطية لكل من discovered وeligible وscanned وskipped وverified وcached وerrors. تفصل coverage.reasons الملفات المتخطاة حسب path وextension وoversized وexcluded وunreadable وarchive_limit.

استخدم هذا الفحص قبل قبول الفحص بوصفه مكتملا:

$coverage = $report->coverage;

if (empty($coverage['complete']) || !empty($coverage['errors'])) {
throw new RuntimeException('Scan coverage is incomplete.');
}

يمكن أن تجعل دفعات الإزاحة والحدود والملفات غير القابلة للقراءة وحدود حجم الملفات وحدود الأرشيف النتيجة غير مكتملة. تحمل نتيجة مكتملة بلا نتائج وزنا أكبر من نتيجة جزئية بلا نتائج.

التشخيصات والبيانات الخارجية

تبلغ diagnostics عن الأخطاء غير القاتلة. على سبيل المثال، يمكن للفاحص المتابعة باستخدام تعريفات Maltrail المخزنة مؤقتا عندما يفشل تحديث. احفظ التشخيصات إلى جانب النتائج كي يتمكن المشغل من تمييز نتيجة نظيفة من تحليل مخفّض.

تعرض signature_indexes أعداد السجلات وتجزئات المصدر لفهارس البرامج الخبيثة واللب القديم المضمّنة. عندما يوجد مخزن Maltrail نشط، فإنه يتضمن أيضا بيانات تعريف فهرس النطاق ووقت تحديثه. استخدم تلك القيم لمسارات التدقيق، لا بديلا عن أدلة النتيجة.

تسلسل التقارير

استخدم json_encode() مع معالجة الأخطاء عند تخزين التقرير في الذاكرة:

$json = json_encode($report, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);

if ($json === false) {
throw new RuntimeException('Could not serialize scan report: ' . json_last_error_msg());
}

استخدم setReportFormat('json') أو setReportFormat('sarif') عندما ينبغي للفاحص أيضا كتابة ملف لأدوات خارجية. اختر دليلا خارج المشروع المفحوص للتقارير ونقاط التحقق والنسخ الاحتياطية والملفات المعزولة.