Se puoi, codifica un controllo antivirus nel gestore di caricamento file. Così come, quando viene ricevuto il file HTTP inviato, lo scannerizza con un AV prima di renderlo disponibile agli utenti finali. Se fallisce il controllo AV, scomponilo.
Lo strumento di ClamAV, clamscan
può farlo da stdin, quindi il file potrebbe anche non essere salvato prima.
Dovresti aggiornare regolarmente l'AVDB e pianificare periodicamente il ricontrollo di questi file, nel caso in cui ci sia un nuovo trojan che non era presente nelle firme quando è stato caricato per la prima volta.
Ovviamente, se sei davvero preoccupato, puoi inviare un pipe al file attraverso clamscan
anche alla sua uscita (ad esempio su ogni HTTP / GET di quel file).
Se le prestazioni sono un fattore, potresti preferire il flusso del file in una directory di staging / e terminare la richiesta HTTP con una risposta HTTP/202 Accepted
. Quindi puoi programmare la tua scansione su quella directory con un cron job (o qualcosa del genere) per tenerlo fuori banda. Il processo di scansione può quindi spostare i file di successo in una directory user_content /, dalla quale possono essere pubblicati. Dovrai bloccare la configurazione del tuo server web in modo che la directory di staging / non possa mai essere servita direttamente.
Per inciso, vorrei utilizzare un nome di dominio separato per ospitare i dati caricati dall'utente (e configurarlo in modo che il sito non debba essere scansionato da bot con robots.txt
, ecc.) in modo che, se ottieni un flusso di caricamenti di malware, è meno probabile che il tuo dominio principale venga inserito nella lista nera.