碰巧有人用病毒填写表格并附加了文件。我们的应用程序仅检查文件扩展名和大小,而没有其他任何验证。可以使用某些防病毒软件或其他工具检查上传的文件。
最好的解决方案是什么?
最佳答案
我正在使用https://github.com/philvarner/clamavj。下载ClamScan.java
和ScanResult.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,则可能对您有用:
下载包含clamd.exe的http://oss.netfarm.it/clamav/;
下载http://www.clamwin.com/,它是Windows版本的ClamAV,其中包含病毒定义更新程序(freshclam.exe);
正常安装两个应用程序;
将clamd.conf复制到C:/ Clamav并进行如下编辑:
LogFile C:\Program Files (x86)\ClamWin\bin\clamd.log
DatabaseDirectory C:\ProgramData\.clamwin\db
打开带有管理员权限的cmd提示符,然后将'cd'转到
Clamav文件夹,您将在其中找到clamd.exe;
键入“ clamd.exe --install”(不带引号);
打开Windows服务并设置“ ClamWin Free Antivirus Scanner
服务”以自动启动。
否则,只需通过
clamAVHost
和clamAVPort
参数连接到Linux安装,您需要定义它们的值。