检查上传的文件是否有病毒

2022-09-04 22:42:14

我有一些应用。用户可以上传文件,我将其保存在磁盘上,并在用户需要时将其返回。我需要为上传的病毒文件实施一些保护。我找到了这个问题的3解决方案:

  1. 使用在线防病毒软件
  2. 在我的服务器上安装防病毒软件,并从命令行检查上传的文件
  3. 通过 sdk 或 api 集成防病毒软件。

我不喜欢第一个解决方案,因为我为其他服务器发送我的文件和私人信息。我认为第二个解决方案是最好的,但我不知道如何正确实现它。最后一个解决方案不错,但我找不到任何好的和着名的防病毒软件,谁有java api。

请给我一些解决这个问题的方向。Mb一些建议或文献。解决它的最佳方法是什么?


答案 1

首先,您必须检查已安装的防病毒软件提供了哪种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应用程序中实现防病毒文件扫描

希望这对您有所帮助。


答案 2

在线防病毒ClamAV:https://github.com/cdarras/clamav-client 是一个很好的。

如果您使用Linux / Mac,在线AV应该就足够了。如果使用 Windows,则还应该在服务器上安装防病毒软件。


推荐