Проверка загруженных файлов на вирусы

У меня есть какое-то приложение. Пользователь может загружать файлы, я сохраняю их на диске и возвращаю, когда пользователь хочет. Мне нужно реализовать защиту загруженных файлов от вирусов. Я нашел 3 решения для этой проблемы:

  1. Используйте онлайн антивирусы
  2. Установите антивирус на моем сервере и проверьте загруженный файл из командной строки
  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, вы также должны установить антивирус на свой сервер.

Другие вопросы по тегам