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

الفحص باستخدام Scanner

يقوم AMWScan\Scanner بتعيين هدف وتشغيل التحليلات المفعّلة وإرجاع التقرير الحالي. مرر الهدف بوصفه وسيطة run() الأولى؛ واستخدم أدوات الضبط للإعدادات الأخرى التي لا تعيد run() تحليلها.

المُنشئ ودورة الحياة

use AMWScan\Scanner;

$scanner = new Scanner();
$report = $scanner->run(['/srv/app']);
العضوالعقد
__construct(?callable $wordpressDatabaseFactory = null)ينشئ فاحصا. احذف المصنع ما لم يوفر التكامل الخاص بك تبعية فاحص قاعدة بيانات WordPress الاختيارية.
run(array $args = [])يعيد تعيين التقرير الحالي، ويطبق وسيطات بأسلوب CLI، ويفحص الهدف المطلوب، ثم يعيد stdClass. يعيد false عند التقاط استثناء أو مقاطعة التشغيل.
isInterrupted()يعيد ما إذا كان التشغيل الحالي أو الأحدث قد قوطع.
getLastError()يعيد رسالة الخطأ الملتقطة من أحدث تشغيل فاشل.
getReport()يعيد التقرير الحالي بوصفه stdClass؛ استخدمه بعد تشغيل ناجح.

تقبل مصفوفة $args الاختيارية أسماء الخيارات نفسها التي يقبلها فاحص سطر الأوامر. مرر الهدف دائما بوصفه أول عنصر فيها. تعيد run() أيضا تطبيق مسارها الموضعي وخيارات --max-filesize و--offset و--limit، لذا مرر عناصر التحكم هذه عبر $args. راجع مرجع CLI لأسماء العلامات والقيود.

اختيار الهدف والملفات

الطريقةالإدخالالتأثير
setPathScan(string $path)مسار ملف أو دليل موجوديضبط هدف الفحص الحالي الموحّد. تتجاوزه وسيطة موضعية تمرر إلى run().
setIgnorePaths(array $paths)أنماط المساراتيستبعد المسارات المطابقة.
setFilterPaths(array $paths)أنماط المساراتيقصر الفحص على المسارات المطابقة.
setExtensions(array $extensions)امتدادات الملفات دون النقطة الأولىيستبدل قائمة الامتدادات المؤهلة.
setScanAll(bool $scanAll)قيمة منطقيةيتضمن الملفات خارج قائمة الامتدادات المضبوطة.
setMaxFilesize(int $size)بايتاتيضبط الحد الحالي. مرر --max-filesize=<size> إلى run() لحد خاص بالفحص.
setOffset(int $offset) / setLimit(int $limit)عدد صحيح غير سالبيفحص مجموعة فرعية معيّنة لمعالجة دفعات مضبوطة.

تحقق من كل مسار يأتي من طلب أو حمولة مهمة قبل تمريره إلى SDK. يجب على التكامل المواجه للويب حل المسار مقابل جذر مشروع مسموح ورفض المواقع الواقعة خارجه.

نطاق الاكتشاف

الطريقةالتأثير
enableLiteMode() / disableLiteMode()يختار مجموعة تعريفات الاستغلال الأخف.
setOnlySignaturesMode()يفعّل التواقيع ويعطل فحوصات الدوال والاستغلال.
setOnlyExploitsMode()يفعّل فحص الاستغلال فقط.
setOnlyFunctionsMode()يفعّل فحوصات التواقيع والدوال ويعطل فحص الاستغلال.
setFunctions(array $functions)يستبدل تعريفات الدوال الخطرة.
setFunctionsEncoded(array $functions)يضيف الدوال المرمّزة المتوفرة إلى الدوال الخطرة المضمّنة.
setExploits(array $exploits)يستبدل تعريفات الاستغلال.
enableChecksum() / disableChecksum()يفعّل أو يعطل التحقق من سلامة المنصة.
enableDeobfuscateMode() / disableDeobfuscateMode()يفعّل أو يعطل مخرجات إزالة التمويه. يؤدي تفعيله أيضا إلى تفعيل كتابة التقرير.

تستبدل طرق setOnly...Mode() الثلاث بعضها نطاق اكتشاف بعضا. استدع واحدة منها على الأكثر لكل فحص. لفحوصات التطبيقات العادية، ابدأ بالوضع الخفيف والسلوك الذي يقتصر على التقرير، ثم اضبطه بناء على النتائج المراجعة.

عناصر التحكم في المخرجات والتنفيذ

الطريقةالتأثير
setSilentMode(bool $enabled = true)يعطل المطالبات التفاعلية. عند تفعيله من دون مطالبة موجودة، يضبط التخطي التلقائي.
setColors(bool $enabled = true)يفعّل أو يعطل ألوان الطرفية.
enableLogs() / disableLogs()يفعّل أو يعطل تسجيل الفاحص.
setPathLogs(string $path)يضبط مسار ملف السجل.
enableReport() / disableReport()يفعّل أو يعطل كتابة ملف تقرير.
setPathReport(string $path)يضبط قالب مسار التقرير.
setReportFormat(string $format)يختار html أو txt أو text أو log أو logs أو json أو sarif أو htm. تترك القيم غير الصالحة التنسيق السابق دون تغيير.
enableCache() / disableCache()يفعّل أو يعطل التخزين المؤقت للفحص.

اضبط setSilentMode() وsetAutoSkip() لفحوصات التقارير غير المراقبة. استخدم مخرجات JSON أو SARIF عندما تستهلك عملية أخرى التقرير، لكن تعامل مع عقد التقرير في الذاكرة بوصفه مصدر الحقيقة للتكامل.

عناصر التحكم في المعالجة

الطريقةالإجراء التلقائي الافتراضي
setAutoSkip()يترك النتيجة دون تغيير.
setAutoClean()يزيل الشيفرة المطابقة من ملف.
setAutoCleanLine()يزيل السطر المطابق.
setAutoQuarantine()ينقل الملف إلى الحجر الصحي.
setAutoDelete()يحذف الملف.
setAutoWhitelist()يضيف النتيجة إلى القائمة البيضاء.
enableBackups() / setPathBackups(string $path)يحتفظ بنسخة احتياطية من الملفات التي يغيرها الفاحص.
setPathQuarantine(string $path)يضبط دليل الحجر الصحي.
setPathWhitelist(string $path)يضبط ملف JSON للقائمة البيضاء.
خطر

تعدل setAutoClean() وsetAutoCleanLine() وsetAutoQuarantine() وsetAutoDelete() الملفات. فعّل النسخ الاحتياطية، واكتب خارج شجرة الفحص، واختبر سير العمل مقابل نسخة من المشروع قبل استخدام المعالجة التلقائية في الإنتاج.

فحص دفعي محدود

use AMWScan\Scanner;

$scanner = new Scanner();
$report = $scanner
->setIgnorePaths(['/srv/releases/current/var/cache'])
->setExtensions(['php', 'phtml', 'htaccess'])
->enableLiteMode()
->setSilentMode()
->setAutoSkip()
->run([
'/srv/releases/current',
'--max-filesize=2097152',
]);

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

افحص $report->coverage في كل دفعة. يؤكد الإرجاع الناجح فقط أن الفحص اكتمل؛ ولا يعني أن كل ملف مكتشف كان مؤهلا أو قابلا للقراءة.