الفحص باستخدام 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 في كل دفعة. يؤكد الإرجاع الناجح فقط أن الفحص اكتمل؛ ولا يعني أن كل ملف مكتشف كان مؤهلا أو قابلا للقراءة.