Scannen mit Scanner
AMWScan\Scanner ordnet ein Ziel zu, führt aktivierte Analysen aus und gibt den aktuellen Bericht zurück. Übergeben Sie das Ziel als erstes Argument an run(); verwenden Sie Setter für weitere Konfigurationen, die run() nicht erneut analysiert.
Konstruktor und Lebenszyklus
use AMWScan\Scanner;
$scanner = new Scanner();
$report = $scanner->run(['/srv/app']);
| Mitglied | Vertrag |
|---|---|
__construct(?callable $wordpressDatabaseFactory = null) | Erstellt einen Scanner. Lassen Sie die Factory weg, sofern Ihre Integration nicht die optionale Abhängigkeit für den WordPress-Datenbankscanner bereitstellt. |
run(array $args = []) | Setzt den aktuellen Bericht zurück, übernimmt CLI-ähnliche Argumente, scannt das angeforderte Ziel und gibt stdClass zurück. Gibt false zurück, wenn eine Ausnahme abgefangen wird oder der Lauf unterbrochen wird. |
isInterrupted() | Gibt zurück, ob der aktuelle oder letzte Lauf unterbrochen wurde. |
getLastError() | Gibt die abgefangene Fehlermeldung des letzten fehlgeschlagenen Laufs zurück. |
getReport() | Gibt den aktuellen Bericht als stdClass zurück; verwenden Sie ihn nach einem erfolgreichen Lauf. |
Das optionale Array $args akzeptiert dieselben Optionsnamen wie der Kommandozeilen-Scanner. Übergeben Sie das Ziel immer als erstes Element. run() übernimmt außerdem den Positionspfad sowie die Optionen --max-filesize, --offset und --limit erneut. Übergeben Sie diese Steuerungen daher über $args. Flag-Namen und Einschränkungen finden Sie in der CLI-Referenz.
Ziel und Dateiauswahl
| Methode | Eingabe | Wirkung |
|---|---|---|
setPathScan(string $path) | Pfad zu einer vorhandenen Datei oder einem Verzeichnis | Legt das aktuelle normalisierte Scanziel fest. Ein an run() übergebenes Positionsargument überschreibt es. |
setIgnorePaths(array $paths) | Pfadmuster | Schließt übereinstimmende Pfade aus. |
setFilterPaths(array $paths) | Pfadmuster | Beschränkt den Scan auf übereinstimmende Pfade. |
setExtensions(array $extensions) | Dateierweiterungen ohne führenden Punkt | Ersetzt die Liste zulässiger Erweiterungen. |
setScanAll(bool $scanAll) | Boolescher Wert | Bezieht Dateien außerhalb der konfigurierten Erweiterungsliste ein. |
setMaxFilesize(int $size) | Bytes | Legt das aktuelle Limit fest. Übergeben Sie --max-filesize=<size> an run() für ein scanspezifisches Limit. |
setOffset(int $offset) / setLimit(int $limit) | Nicht negative Ganzzahl | Scannt eine zugeordnete Teilmenge für kontrollierte Stapelverarbeitung. |
Validieren Sie jeden Pfad aus einer Anfrage oder Job-Nutzlast, bevor Sie ihn an die SDK übergeben. Eine weborientierte Integration sollte den Pfad relativ zu einem zulässigen Projektstamm auflösen und Orte außerhalb davon ablehnen.
Erkennungsumfang
| Methode | Wirkung |
|---|---|
enableLiteMode() / disableLiteMode() | Wählt den leichteren Satz von Exploit-Definitionen. |
setOnlySignaturesMode() | Aktiviert Signaturen und deaktiviert Funktions- und Exploit-Scans. |
setOnlyExploitsMode() | Aktiviert ausschließlich Exploit-Scans. |
setOnlyFunctionsMode() | Aktiviert Signatur- und Funktionsscans und deaktiviert Exploit-Scans. |
setFunctions(array $functions) | Ersetzt die Definitionen gefährlicher Funktionen. |
setFunctionsEncoded(array $functions) | Fügt bereitgestellte kodierte Funktionen zu den eingebauten gefährlichen Funktionen hinzu. |
setExploits(array $exploits) | Ersetzt Exploit-Definitionen. |
enableChecksum() / disableChecksum() | Aktiviert oder deaktiviert die Integritätsprüfung der Plattform. |
enableDeobfuscateMode() / disableDeobfuscateMode() | Aktiviert oder deaktiviert die Deobfuskationsausgabe. Das Aktivieren aktiviert auch das Schreiben von Berichten. |
Die drei Methoden setOnly...Mode() ersetzen jeweils den Erkennungsumfang der anderen. Rufen Sie pro Lauf höchstens eine davon auf. Beginnen Sie bei normalen Anwendungsscans mit dem Lite-Modus und rein berichtender Arbeitsweise; passen Sie anschließend anhand geprüfter Funde an.
Ausgabe- und Ausführungssteuerungen
| Methode | Wirkung |
|---|---|
setSilentMode(bool $enabled = true) | Deaktiviert interaktive Abfragen. Bei Aktivierung ohne vorhandene Abfrage wird automatisches Überspringen festgelegt. |
setColors(bool $enabled = true) | Aktiviert oder deaktiviert Terminalfarben. |
enableLogs() / disableLogs() | Aktiviert oder deaktiviert die Scanner-Protokollierung. |
setPathLogs(string $path) | Legt den Pfad der Protokolldatei fest. |
enableReport() / disableReport() | Aktiviert oder deaktiviert das Schreiben einer Berichtsdatei. |
setPathReport(string $path) | Legt die Vorlage für den Berichtspfad fest. |
setReportFormat(string $format) | Wählt html, txt, text, log, logs, json, sarif oder htm. Ungültige Werte lassen das vorherige Format unverändert. |
enableCache() / disableCache() | Aktiviert oder deaktiviert den Scan-Cache. |
Setzen Sie setSilentMode() und setAutoSkip() für unbeaufsichtigte Berichtsscans. Verwenden Sie JSON- oder SARIF-Ausgabe, wenn ein anderer Prozess den Bericht verarbeitet, behandeln Sie jedoch den In-Memory-Berichtsvertrag als maßgebliche Integrationsquelle.
Steuerungen für Behebungen
| Methode | Standardmäßige automatische Aktion |
|---|---|
setAutoSkip() | Lässt den Fund unverändert. |
setAutoClean() | Entfernt übereinstimmenden Code aus einer Datei. |
setAutoCleanLine() | Entfernt die übereinstimmende Zeile. |
setAutoQuarantine() | Verschiebt die Datei in die Quarantäne. |
setAutoDelete() | Löscht die Datei. |
setAutoWhitelist() | Fügt den Fund zur Whitelist hinzu. |
enableBackups() / setPathBackups(string $path) | Bewahrt eine Sicherung von Dateien auf, die der Scanner ändert. |
setPathQuarantine(string $path) | Legt das Quarantäneverzeichnis fest. |
setPathWhitelist(string $path) | Legt die Whitelist-JSON-Datei fest. |
setAutoClean(), setAutoCleanLine(), setAutoQuarantine() und setAutoDelete() ändern Dateien. Aktivieren Sie Sicherungen, schreiben Sie außerhalb des gescannten Baums und testen Sie den Workflow an einer Kopie des Projekts, bevor Sie automatisierte Behebungen in der Produktion einsetzen.
Ein begrenzter Stapelscan
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.');
}
Prüfen Sie bei jedem Stapel $report->coverage. Eine erfolgreiche Rückgabe bestätigt nur, dass der Scan abgeschlossen wurde; sie bedeutet nicht, dass jede gefundene Datei zulässig oder lesbar war.