上传的文件有病毒如何验证它?

时间:2016-03-15 20:21:48

标签: java file-upload web-applications

碰巧有人用病毒填写表格和附件。我们的应用程序仅检查文件扩展名和大小,并且没有其他任何验证。可以使用某些防病毒软件检查上传的文件......

这里最好的解决方案是什么?

2 个答案:

答案 0 :(得分:2)

我正在使用https://github.com/philvarner/clamavj。下载ClamScan.javaScanResult.java

然后我有点像这样叫它(未经测试):

protected ScanResult.Status virusScanFile(File file) {
    ClamScan clamScan = new ClamScan(clamAVHost, clamAVPort, clamAVTimeout);
    ScanResult scanResult = null;
    if (clamScan.ping()) {
        try (InputStream inputStream = new FileInputStream(file)) {
            scanResult = clamScan.scan(inputStream);
        } catch (FileNotFoundException | IOException e) {
            logger.error(e.getStackTrace());
        } 
    } else {
        throw new RuntimeException("Could not scan file as ClamD did not respond to ping request!");
    }        
    ScanResult.Status scanResultStatus = null;
    if (scanResult != null) {
        scanResultStatus = scanResult.getStatus();
    }
    return scanResultStatus;
}

如果您需要在Windows上安装ClamAV用于开发目的,那么这可能对您有用:

  1. 下载包含clamd.exe;
  2. http://oss.netfarm.it/clamav/
  3. 下载http://www.clamwin.com/,它是Windows版本的ClamAV,包含病毒定义更新程序(freshclam.exe);
  4. 正常安装两个应用程序;
  5. 将clamd.conf复制到C:/ Clamav并编辑如下:

    LogFile C:\Program Files (x86)\ClamWin\bin\clamd.log
    DatabaseDirectory C:\ProgramData\.clamwin\db
    
  6. 使用管理员权限打开cmd提示符并使用'cd'打开 Clamav文件夹,你会发现clamd.exe;

  7. 键入“clamd.exe --install”(无引号);

  8. 打开Windows服务并设置“ClamWin Free Antivirus Scanner 服务“自动启动。

  9. 否则,只需通过clamAVHostclamAVPort参数连接到Linux安装,您需要定义这些参数值。

答案 1 :(得分:0)

您可以使用Clamscan之类的东西,并使用他们的命令行工具指向您想要的任何文件,或者在您的应用程序中包含执行检查的脚本。

clamscan OPTIONS File/Folder