我们正在设计一个Azure网站,允许用户上传可以访问的内容(MP4,Docx ... MSOffice文件) .
我们将对一些视频内容进行编码,以便在流式传输之前提供多种不同的质量格式(使用Azure Media Services) .
我们需要添加一个中间步骤,以便我们扫描上传的文件以查找潜在的病毒风险 . 是否有内置于azure(或第三方)的功能,允许我们在处理之前调用API来扫描内容?我们理想地寻找API而不仅仅是VM上的后台服务,因此我们可以获得可能用于Web或辅助角色的反馈 .
快速浏览一下Symantec Endpoint和Windows Defender,但不确定这些是否提供了API
3 回答
ClamAV是一个好主意,特别是现在0.99即将发布YARA规则支持 - 它将使你很容易编写自定义规则并允许clamav在今天开放使用大量优秀的YARA规则 .
另一条路线,以及一些无耻的插件,是检查scanii.com,它是用于恶意软件/病毒检测的SaaS,它与AWS和Azures的整合非常好 .
我使用开源ClamAV成功完成了这项工作 . 你没有指定你正在使用的语言,但因为它是Azure我会假设.Net .
有一个.Net包装器应该提供您正在寻找的API:
https://github.com/tekmaven/nClam
这是一些示例代码( note: 这是直接从nClam GitHub仓库复制并在此复制,以防止链接腐烂)
还有可用于刷新病毒定义数据库的API . 所有必需的ClamAV文件都可以包含在部署包中,任何配置都可以放入服务启动代码中 .
有很多选择可以实现这一目标:
首先,您可以使用已经提到的ClamAV . ClamAV并不总能获得其病毒数据库的最佳报道,但正如其他人指出的那样,它易于使用且可扩展 .
您还可以安装商业扫描仪,例如avg,kaspersky等 . 其中许多都带有可以直接与之通信的C API,但从许可的角度来看,通常可以获得访问权限 .
或者,您可以使用以下内容直接调用可执行文件来捕获输出:
然后,您需要解析输出以获取结果并在应用程序中使用它 .
最后,现在有一些商业API可用于执行此类操作,例如attachmentscanner(免责声明我与此产品相关)或scanii . 这些将为您提供API和更具伸缩性的选项,以扫描特定文件并从至少一个病毒检查引擎接收响应 .