病毒扫描从 Azure Web/工作角色上传的文件

Tim*_*Tim 11 antivirus symantec azure azure-media-services

我们正在设计一个 Azure 网站,它允许用户上传内容(MP4、Docx...MSOffice 文件),然后可以访问这些内容。

在流式传输(使用Azure 媒体服务)之前,我们将对某些视频内容进行编码以提供多种不同质量的格式。

我们需要添加一个中间步骤,以便我们可以扫描上传的文件是否存在潜在的病毒风险。是否有内置于 azure(或第三方)的功能允许我们在处理内容之前调用 API 来扫描内容?理想情况下,我们正在寻找 API 而不仅仅是 VM 上的后台服务,因此我们可以获得可能用于 Web 或辅助角色的反馈。

快速浏览了 Symantec Endpoint 和 Windows Defender,但不确定它们是否提供 API

Mik*_*win 3

我已经使用开源 ClamAV 成功完成了此操作。您没有指定您使用的语言,但由于它是 Azure,所以我假设是 .Net。

有一个 .Net 包装器应该提供您正在寻找的 API:

https://github.com/tekmaven/nClam

这是一些示例代码(注意:这是直接从 nClam GitHub 存储库页面复制并在此处复制只是为了防止链接失效)

using System;
using System.Linq;
using nClam;

class Program
{
    static void Main(string[] args)
    {

        var clam = new ClamClient("localhost", 3310);
        var scanResult = clam.ScanFileOnServer("C:\\test.txt");  //any file you would like!

        switch(scanResult.Result)
        {
            case ClamScanResults.Clean:
                Console.WriteLine("The file is clean!");
                break;
            case ClamScanResults.VirusDetected:
                Console.WriteLine("Virus Found!");
                Console.WriteLine("Virus name: {0}", scanResult.InfectedFiles.First().VirusName);
                break;
            case ClamScanResults.Error:
                Console.WriteLine("Woah an error occured! Error: {0}", scanResult.RawResult);
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还有可用于刷新病毒定义数据库的 API。所有必需的 ClamAV 文件都可以包含在部署包中,任何配置都可以放入服务启动代码中。