Passa al contenuto principale
Versione: Più recente

Scanner

AMWScan\Scanner mappa una destinazione, esegue le analisi abilitate e restituisce il report corrente. Passa la destinazione come primo argomento di run(); usa i setter per le altre configurazioni che run() non analizza di nuovo.

Costruttore e ciclo di vita

use AMWScan\Scanner;

$scanner = new Scanner();
$report = $scanner->run(['/srv/app']);
MembroContratto
__construct(?callable $wordpressDatabaseFactory = null)Crea uno scanner. Ometti la factory a meno che l'integrazione non fornisca la dipendenza opzionale dello scanner del database WordPress.
run(array $args = [])Reimposta il report corrente, applica argomenti in stile CLI, scansiona la destinazione richiesta e restituisce stdClass. Restituisce false quando intercetta un'eccezione o l'esecuzione viene interrotta.
isInterrupted()Restituisce se l'esecuzione corrente o più recente è stata interrotta.
getLastError()Restituisce il messaggio di errore intercettato dall'esecuzione non riuscita più recente.
getReport()Restituisce il report corrente come stdClass; usalo dopo un'esecuzione riuscita.

L'array opzionale $args accetta gli stessi nomi di opzione dello scanner da riga di comando. Passa sempre la destinazione come primo elemento. run() riapplica inoltre il percorso posizionale e le opzioni --max-filesize, --offset e --limit, quindi passa questi controlli tramite $args. Consulta il Riferimento CLI per nomi e vincoli dei flag.

Destinazione e selezione dei file

MetodoInputEffetto
setPathScan(string $path)Percorso di file o directory esistenteImposta la destinazione di scansione normalizzata corrente. Un argomento posizionale passato a run() la sostituisce.
setIgnorePaths(array $paths)Modelli di percorsoEsclude i percorsi corrispondenti.
setFilterPaths(array $paths)Modelli di percorsoLimita la scansione ai percorsi corrispondenti.
setExtensions(array $extensions)Estensioni dei file senza punto inizialeSostituisce l'elenco delle estensioni idonee.
setScanAll(bool $scanAll)BooleanoInclude file oltre l'elenco di estensioni configurato.
setMaxFilesize(int $size)ByteImposta il limite corrente. Passa --max-filesize=<size> a run() per un limite specifico della scansione.
setOffset(int $offset) / setLimit(int $limit)Intero non negativoEsegue la scansione di un sottoinsieme mappato per l'elaborazione controllata in batch.

Convalida ogni percorso fornito da una richiesta o dal payload di un lavoro prima di passarlo all'SDK. Un'integrazione rivolta al web deve risolvere il percorso rispetto a una root di progetto consentita e rifiutare le posizioni esterne.

Ambito di rilevamento

MetodoEffetto
enableLiteMode() / disableLiteMode()Seleziona il set più leggero di definizioni degli exploit.
setOnlySignaturesMode()Abilita le firme e disabilita le scansioni di funzioni ed exploit.
setOnlyExploitsMode()Abilita solo la scansione degli exploit.
setOnlyFunctionsMode()Abilita le scansioni di firme e funzioni e disabilita quella degli exploit.
setFunctions(array $functions)Sostituisce le definizioni di funzioni pericolose.
setFunctionsEncoded(array $functions)Aggiunge le funzioni codificate fornite alle funzioni pericolose integrate.
setExploits(array $exploits)Sostituisce le definizioni degli exploit.
enableChecksum() / disableChecksum()Abilita o disabilita la verifica di integrità della piattaforma.
enableDeobfuscateMode() / disableDeobfuscateMode()Abilita o disabilita l'output di deoffuscamento. L'abilitazione abilita anche la scrittura del report.

I tre metodi setOnly...Mode() si sostituiscono a vicenda nell'ambito di rilevamento. Chiama uno di essi al massimo una volta per esecuzione. Per le normali scansioni delle applicazioni, inizia con la modalità lite e un comportamento di solo report, quindi ottimizza in base ai rilevamenti esaminati.

Controlli di output ed esecuzione

MetodoEffetto
setSilentMode(bool $enabled = true)Disabilita i prompt interattivi. Se abilitato senza un prompt esistente, imposta il salto automatico.
setColors(bool $enabled = true)Abilita o disabilita i colori del terminale.
enableLogs() / disableLogs()Abilita o disabilita la registrazione dello scanner.
setPathLogs(string $path)Imposta il percorso del file di log.
enableReport() / disableReport()Abilita o disabilita la scrittura di un file di report.
setPathReport(string $path)Imposta il modello di percorso del report.
setReportFormat(string $format)Seleziona html, txt, text, log, logs, json, sarif o htm. I valori non validi lasciano invariato il formato precedente.
enableCache() / disableCache()Abilita o disabilita la cache delle scansioni.

Imposta setSilentMode() e setAutoSkip() per scansioni di report non presidiate. Usa l'output JSON o SARIF quando un altro processo utilizza il report, ma considera il contratto del report in memoria come fonte di verità dell'integrazione.

Controlli di correzione

MetodoAzione automatica predefinita
setAutoSkip()Lascia invariato il rilevamento.
setAutoClean()Rimuove il codice corrispondente da un file.
setAutoCleanLine()Rimuove la riga corrispondente.
setAutoQuarantine()Sposta il file in quarantena.
setAutoDelete()Elimina il file.
setAutoWhitelist()Aggiunge il rilevamento alla whitelist.
enableBackups() / setPathBackups(string $path)Conserva un backup dei file modificati dallo scanner.
setPathQuarantine(string $path)Imposta la directory di quarantena.
setPathWhitelist(string $path)Imposta il file JSON della whitelist.
pericolo

setAutoClean(), setAutoCleanLine(), setAutoQuarantine() e setAutoDelete() modificano i file. Abilita i backup, scrivi al di fuori dell'albero scansionato e prova il flusso di lavoro su una copia del progetto prima di usare la correzione automatizzata in produzione.

Una scansione batch delimitata

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.');
}

Esamina $report->coverage in ogni batch. Un ritorno riuscito conferma solo che la scansione è stata completata; non significa che ogni file individuato fosse idoneo o leggibile.