Si puede, codifique una comprobación de virus en el controlador de carga de archivos. Al igual que en, cuando se recibe su archivo HTTP publicado, escanéelo con un AV antes de ponerlo a disposición de sus usuarios finales. Si falla la comprobación de AV, nótela.
La herramienta de ClamAV, clamscan
puede hacer esto desde stdin, por lo que es posible que el archivo ni siquiera tenga que guardarse en primer lugar.
Debería actualizar regularmente el AVDB y programar periódicamente la revisión de estos archivos, en caso de que haya un nuevo troyano que no estuviera en las firmas cuando se cargó por primera vez.
Por supuesto, si está realmente preocupado, también podría canalizar el archivo a través de clamscan
en su salida (es decir, en cada HTTP / GET de ese archivo).
Si el rendimiento es un factor importante, es posible que prefiera transmitir el archivo a un directorio / almacenamiento provisional y finalizar la solicitud HTTP con una respuesta HTTP/202 Accepted
. Luego puede programar su análisis en ese directorio con un trabajo cron (o algo así) para mantenerlo fuera de banda. Su proceso de escaneo puede luego mover los archivos exitosos a un directorio user_content /, desde el cual pueden ser servidos. Deberá bloquear la configuración de su servidor web para que el directorio de almacenamiento / almacenamiento nunca se pueda servir directamente.
Aparte de eso, usaría un nombre de dominio separado para alojar los datos subidos por el usuario (y configurarlo para que el sitio no sea escaneado por los robots con robots.txt
, etc.) para que, si obtiene una corriente de subidas de malware, es menos probable que su lista de dominios principales esté en la lista negra.