मुख्य कंटेंट तक स्किप करें
Version: v0.21

Scanner के साथ स्कैन करें

AMWScan\Scanner लक्ष्य को मैप करता है, सक्षम विश्लेषण चलाता है, और वर्तमान रिपोर्ट लौटाता है। लक्ष्य को पहले run() आर्ग्युमेंट के रूप में दें; अन्य ऐसे कॉन्फ़िगरेशन के लिए setter का उपयोग करें जिन्हें run() फिर से पार्स नहीं करता।

कंस्ट्रक्टर और लाइफसाइकल

use AMWScan\Scanner;

$scanner = new Scanner();
$report = $scanner->run(['/srv/app']);
सदस्यकॉन्ट्रैक्ट
__construct(?callable $wordpressDatabaseFactory = null)स्कैनर बनाता है। जब तक आपका एकीकरण वैकल्पिक WordPress डेटाबेस स्कैनर निर्भरता प्रदान न करे, factory छोड़ दें।
run(array $args = [])वर्तमान रिपोर्ट रीसेट करता है, CLI-जैसे आर्ग्युमेंट लागू करता है, अनुरोधित लक्ष्य को स्कैन करता है, और stdClass लौटाता है। अपवाद पकड़ने या रन बाधित होने पर false लौटाता है।
isInterrupted()वर्तमान या सबसे हालिया रन के बाधित होने की जानकारी लौटाता है।
getLastError()सबसे हालिया विफल रन से पकड़ा गया त्रुटि संदेश लौटाता है।
getReport()वर्तमान रिपोर्ट stdClass के रूप में लौटाता है; सफल रन के बाद इसका उपयोग करें।

वैकल्पिक $args ऐरे कमांड-लाइन स्कैनर के समान विकल्प नाम स्वीकार करती है। लक्ष्य को हमेशा उसके पहले आइटम के रूप में दें। run() अपना positional path तथा --max-filesize, --offset, और --limit विकल्प भी फिर से लागू करता है, इसलिए ये नियंत्रण $args के माध्यम से दें। फ्लैग नाम और सीमाओं के लिए CLI संदर्भ देखें।

लक्ष्य और फ़ाइल चयन

विधिइनपुटप्रभाव
setPathScan(string $path)मौजूद फ़ाइल या डायरेक्टरी पथवर्तमान सामान्यीकृत स्कैन लक्ष्य सेट करता है। run() को दिया गया positional आर्ग्युमेंट इसे ओवरराइड करता है।
setIgnorePaths(array $paths)पथ पैटर्नमिलते हुए पथों को बाहर करता है।
setFilterPaths(array $paths)पथ पैटर्नस्कैनिंग को मिलते हुए पथों तक सीमित करता है।
setExtensions(array $extensions)अग्रणी dot के बिना फ़ाइल एक्सटेंशनयोग्य एक्सटेंशन सूची को बदलता है।
setScanAll(bool $scanAll)बूलियनकॉन्फ़िगर की गई एक्सटेंशन सूची के बाहर की फ़ाइलें शामिल करता है।
setMaxFilesize(int $size)बाइट्सवर्तमान सीमा सेट करता है। स्कैन-विशिष्ट सीमा के लिए run() को --max-filesize=<size> दें।
setOffset(int $offset) / setLimit(int $limit)गैर-ऋणात्मक पूर्णांकनियंत्रित बैच प्रोसेसिंग के लिए मैप किए गए उपसमूह को स्कैन करता है।

SDK को देने से पहले किसी अनुरोध या जॉब payload से मिले प्रत्येक पथ को मान्य करें। वेब-आधारित एकीकरण को पथ को अनुमत प्रोजेक्ट root के सापेक्ष resolve करना चाहिए और उसके बाहर के स्थानों को अस्वीकार करना चाहिए।

डिटेक्शन दायरा

विधिप्रभाव
enableLiteMode() / disableLiteMode()हल्का exploit definition सेट चुनता है।
setOnlySignaturesMode()signatures सक्षम करता है और function तथा exploit स्कैन अक्षम करता है।
setOnlyExploitsMode()केवल exploit स्कैनिंग सक्षम करता है।
setOnlyFunctionsMode()signature और function स्कैन सक्षम करता है और exploit स्कैन अक्षम करता है।
setFunctions(array $functions)खतरनाक function definitions को बदलता है।
setFunctionsEncoded(array $functions)प्रदान किए गए encoded functions को अंतर्निहित खतरनाक functions में जोड़ता है।
setExploits(array $exploits)exploit definitions को बदलता है।
enableChecksum() / disableChecksum()प्लेटफ़ॉर्म अखंडता सत्यापन सक्षम या अक्षम करता है।
enableDeobfuscateMode() / disableDeobfuscateMode()deobfuscation आउटपुट सक्षम या अक्षम करता है। इसे सक्षम करने से रिपोर्ट लेखन भी सक्षम होता है।

तीनों setOnly...Mode() विधियां एक-दूसरे के डिटेक्शन दायरे को बदल देती हैं। प्रति रन इनमें से अधिकतम एक को कॉल करें। सामान्य एप्लिकेशन स्कैन के लिए lite mode और केवल-रिपोर्ट व्यवहार से शुरुआत करें, फिर समीक्षा की गई फाइंडिंग्स के आधार पर समायोजन करें।

आउटपुट और निष्पादन नियंत्रण

विधिप्रभाव
setSilentMode(bool $enabled = true)इंटरैक्टिव प्रॉम्प्ट अक्षम करता है। मौजूदा प्रॉम्प्ट के बिना सक्षम होने पर स्वचालित skip सेट करता है।
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()स्कैन caching सक्षम या अक्षम करता है।

अनअटेंडेड रिपोर्ट स्कैन के लिए setSilentMode() और setAutoSkip() सेट करें। जब कोई अन्य प्रक्रिया रिपोर्ट का उपयोग करे तो JSON या SARIF आउटपुट का उपयोग करें, लेकिन एकीकरण के लिए इन-मेमोरी रिपोर्ट कॉन्ट्रैक्ट को सत्य स्रोत मानें।

सुधार नियंत्रण

विधिडिफ़ॉल्ट स्वचालित कार्रवाई
setAutoSkip()फाइंडिंग को अपरिवर्तित छोड़ें।
setAutoClean()फ़ाइल से मिलान किया हुआ कोड हटाएं।
setAutoCleanLine()मिलान वाली पंक्ति हटाएं।
setAutoQuarantine()फ़ाइल को quarantine में ले जाएं।
setAutoDelete()फ़ाइल हटाएं।
setAutoWhitelist()फाइंडिंग को whitelist में जोड़ें।
enableBackups() / setPathBackups(string $path)स्कैनर द्वारा बदली गई फ़ाइलों का backup सुरक्षित रखें।
setPathQuarantine(string $path)quarantine डायरेक्टरी सेट करता है।
setPathWhitelist(string $path)whitelist JSON फ़ाइल सेट करता है।
danger

setAutoClean(), setAutoCleanLine(), setAutoQuarantine(), और setAutoDelete() फ़ाइलों को बदलते हैं। backups सक्षम करें, स्कैन किए गए tree के बाहर लिखें, और उत्पादन में स्वचालित सुधार का उपयोग करने से पहले प्रोजेक्ट की एक प्रति पर workflow का परीक्षण करें।

सीमित बैच स्कैन

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 जांचें। सफल return केवल यह पुष्टि करता है कि स्कैन पूरा हुआ; इसका अर्थ यह नहीं कि मिली प्रत्येक फ़ाइल योग्य या पढ़ने योग्य थी।