我正在考虑将病毒扫描程序实现到我正在创建的允许用户上传文件的Web应用程序中。所有后台功能都已完成,但我担心恶意用户可能会上传病毒而其他用户会下载该文件。
我已经研究了几个月如何在我的Web应用程序中实现扫描程序。
我找到了各种在线病毒扫描程序,例如MetaScan-Online和VirusTotal。
我已经阅读了他们提供的文档,但是我仍然感到困惑,并且不确定我是否可以使用API将这些应用程序实现到我的应用程序中。
可以吗?
如果是这样,是否有其他病毒扫描程序可以同时扫描整个文件夹?
答案 0 :(得分:0)
您必须自己处理文件夹的发送,他们不能(作为外部服务)获取已定义文件夹的文件列表。
VirusTotal提供了一个公共API来扫描您的文件,这是一个良好的开端。您可以实现多线程并存储每个文件的结果。这样您就可以避免多次发送同一个文件。
答案 1 :(得分:0)
如果您的反病毒力很强,那么您可以实现服务类并将传入的文件上传到其中一个公共扫描服务。 请记住,他们限制了接受的文件大小和文件数量,并且他们不会永久存储扫描报告。
<强> MetaScan 强>
此处描述了Metascan的公共API:https://www.metascan-online.com/public-api#!/
还有一个PHP检查器可用。但是它使用了他们的API的v1并且看起来过时了。也许联系他们以获得使用API v2的更新版本。 https://www.metascan-online.com/apps#!/php-metascan-online-checker
<强> VirusTotal 强>
此处描述了公共API:https://www.virustotal.com/de/documentation/public-api/
PHP有多个库可用,只提一个 https://github.com/jayzeng/virustotal_apiwrapper
上传后的本地clamAV扫描
另一种解决方案是在文件上传到服务器后使用clamscan
简单地触发clamav扫描。这意味着上传到沙盒av-scan文件夹,扫描,丢弃(如果坏)或保持(如果确定),最后移动到上传文件夹。这很慢,因为每次从PHP调用clamscan命令时都必须加载签名。
对于沙盒文件夹,我指的是用于更好地控制资源的受限系统环境,例如一个&#34;上传目录&#34;具有受限制或删除的读/写/执行权限(用户/组/其他),与应用程序隔离,无法从Web访问且具有受限制的PHP功能(请考虑disable_functions指令)。
当您的服务器运行clamav守护程序(clamd
)时,可以在该文件夹上调用clamdscan
。这个解决方案很快,因为签名保存在内存中。