如何在 Spring 3 MVC 应用程序中对文件上传进行病毒扫描[关闭]

Posted

技术标签:

【中文标题】如何在 Spring 3 MVC 应用程序中对文件上传进行病毒扫描[关闭]【英文标题】:How to implement virus scan on file upload in a Spring 3 MVC application [closed] 【发布时间】:2014-05-04 08:28:22 【问题描述】:

我必须对上传的文件进行病毒扫描,并在 Spring 3 MVC 应用程序中向用户显示适当的消息。

目前我已经使用 Spring MVC 3 配置了文件上传。一旦在控制器中接收到文件,我必须检查是否存在病毒,如果文件感染了任何病毒,那么应用程序应该拒绝该文件并向用户显示具体消息。

关于如何在 Java Spring MVC 应用程序中实现这一点的任何想法。我使用的 spring 版本是 3.2.4。

我们将不胜感激任何有关此方向的帮助/指示。

非常感谢。

【问题讨论】:

嘿@Raptor 到目前为止,文件上传模块正在工作。我不知道如何在控制器级别扫描这些文件,这就是为什么我需要指针以便我可以开始使用它。我还没有开始,因为我的想法不多了。 【参考方案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);

有一篇有趣的文章供大家参考:Implementing an Anti-Virus File Scan in JEE Applications

希望对你有所帮助。

【讨论】:

您能否提供指向 AVG API 的链接?谢谢你的指点。 同意我在任何地方都找不到这个 api 文档??? 如果可以按照方法2如何跟踪病毒扫描的状态?.通过杀毒UI? @Shishir Kumar 是那个 api 给出关于扫描文件状态的响应吗?

以上是关于如何在 Spring 3 MVC 应用程序中对文件上传进行病毒扫描[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Roo 2.0 我找不到 web.xml 那么如何配置 Spring MVC

如何将 Sitemesh 3 与 Spring MVC 3 集成?

如何在c#中对所有日志进行分组

如何让 mvc 管道在 .net core 5 中对 oidc 进行身份验证

spring mvc 如何配置最简洁的

Spring MVC配置多个数据源可能遇到的坑