Проверка загруженных файлов на вирусы
У меня есть какое-то приложение. Пользователь может загружать файлы, я сохраняю их на диске и возвращаю, когда пользователь хочет. Мне нужно реализовать защиту загруженных файлов от вирусов. Я нашел 3 решения для этой проблемы:
- Используйте онлайн антивирусы
- Установите антивирус на моем сервере и проверьте загруженный файл из командной строки
- Интегрируйте антивирус через SDK или API.
Мне не нравится первое решение, потому что я отправляю свои файлы и личную информацию на другой сервер. Второе решение, я думаю, лучше, но я не знаю, как правильно его реализовать. Последнее решение хорошее, но я не могу найти ни одного хорошего и известного антивируса, у которого есть java api.
Пожалуйста, дайте мне направление для решения этой проблемы. Мб какой-то совет или литература. Как лучше всего это решить?
2 ответа
Во-первых, вы должны проверить, какой API предоставляет установленное вами антивирусное программное обеспечение.
Если есть какой-либо Java API (например, AVG API), вы должны использовать его, как показано ниже:
public void scanFile(byte[] fileBytes, String fileName)
throws IOException, Exception {
if (scan) {
AVClient avc = new AVClient(avServer, avPort, avMode);
if (avc.scanfile(fileName, fileBytes) == -1) {
throw new VirusException("WARNING: A virus was detected in
your attachment: " + fileName + "<br>Please scan
your system with the latest antivirus software with
updated virus definitions and try again.");
}
}
}
Если установленное антивирусное программное обеспечение не предоставляет Java API, вы можете вызвать его с помощью командной строки, как показано ниже:
String[] commands = new String[5];
commands[0] = "cmd";
commands[1] = "/c";
commands[2] = "C:\\Program Files\\AVG\\AVG10\\avgscanx.exe";
commands[3] = "/scan=" + filename;
commands[4] = "/report=" + virusoutput;
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(commands);
Для справки есть интересная статья: Реализация антивирусной проверки файлов в приложениях JEE
Надеюсь, это поможет вам.
Онлайновый антивирус ClamAV: https://github.com/cdarras/clamav-client - хороший пример.
Если вы используете Linux/Mac, онлайн AV должно быть достаточно. Если вы используете Windows, вы также должны установить антивирус на свой сервер.