使用PHP在Windows下扫描上传的恶意软件文件

时间:2010-11-09 03:15:34

标签: php security file-upload

我正在尝试在Windows上安装ClamAV,但我找不到如何操作。

我想要的实际是扫描恶意软件上传的文件并返回“安全”或“感染者:X”这样的值

您认为在Windows上使用免费库是否可行?

您知道是否有付费软件可以执行此操作(即使使用命令行)?

2 个答案:

答案 0 :(得分:2)

我设法通过在Windows 2008 Server上安装ClamWin来实现。 (的ClamWin-0.97.6)。我创建了 eicar.txt 文件以测试检测:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

创建 test.php 文件:

<?php
$file = 'C:/Users/Localadmin/Desktop/testfile/eicar.txt'; // infected test file
$db = '"C:/Documents and Settings/All Users/.clamwin/db/"'; // path to database of virus definition
$scan_result = shell_exec("D:/programs/clamwin/bin/clamscan --database=$db $file"); 
echo $scan_result;
?>

它给了我这个结果:

Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 1568163
Engine version: 0.97.6
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 7.363 sec (0 m 7 s)

您可以处理字符串 $ scan_result 以确定'受感染文件后返回的号码:'

我将使用它来扫描通过表单上传的文件,因为扫描需要时间(7秒),我将使用一些ajax脚本,可以很好地将反馈返回给用户,例如“上传文件... “和”扫描病毒......

答案 1 :(得分:1)

您可以安装clamav for windows(clamwin),并使用php的passthru函数通过命令行扫描文件并获取输出。解析它然后显示您的消息。您将不得不调整您的php超时值,或配置您的应用程序上传,让用户在后台脚本扫描并将结果插入数据库或其他内容时不断刷新状态。尝试看看他们这样做的virustotal.com,并用超过20个av扫描仪进行扫描。