我们正在设计一个Azure网站,允许用户上传可以访问的内容(MP4,Docx ... MSOffice文件)。
我们将对一些视频内容进行编码,以便在流式传输之前提供多种不同的质量格式(使用Azure Media Services)。
我们需要添加一个中间步骤,以便我们可以扫描上传的文件以查找潜在的病毒风险。是否有内置于azure(或第三方)的功能,允许我们在处理之前调用API来扫描内容?我们理想地寻找API而不仅仅是VM上的后台服务,因此我们可以获得可能用于Web或辅助角色的反馈。
快速浏览一下Symantec Endpoint和Windows Defender,但不确定这些是否提供API
答案 0 :(得分:1)
我使用开源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;
}
}
}
还有可用于刷新病毒定义数据库的API。所有必需的ClamAV文件都可以包含在部署包中,任何配置都可以放入服务启动代码中。
答案 1 :(得分:1)
我们有相同的问题和相同的用例。最终客户将多个文件,常规扩展名(图像,doc / docx,xls / xlsx,pdf)上传到我们的网站,需要对其进行即时扫描,然后用户付款,然后我们就将整个信息包发送出去。我们需要对其进行扫描和展平以删除宏之类的东西。
我们正在积极寻找解决方案。
您是如何解决用例的?
另外,除了扫描,我们还需要将文件,CDR-深度内容撤防以及在OPSWAT中称为“重建”的文件压平。
意味着在Excel中上传到云中的宏可能会导致cmd行破坏服务器,因此需要先将其删除,然后再将文件插入存储Blob。
我们找到了Metadefender,但它不合适。加为他人所知。 -- 似乎Cloud API扫描速度很快,但是CDR大约需要一分钟,而且每天上传文件的次数受到限制,因此不合适。
按照Metadefender Core的说法,这似乎是非常昂贵的,因为它每年需要花费约3000美元购买8个引擎,病毒发现率达到83%,并且它需要至少花费160美元的Azure VM(检查了4个CPU核心而不是8个)
我只希望有一个用于存储blob的插件可以轻松地做到这一点,并返回为什么在检测到任何威胁时将文件删除的原因返回给我们的应用服务。
答案 2 :(得分:0)
ClamAV是一个好主意,特别是现在0.99即将发布YARA规则支持 - 这将使你很容易编写自定义规则并允许clamav使用吨今天公开的YARA规则很好。
另一条路线,以及一些无耻的插件,是检查scanii.com,它是用于恶意软件/病毒检测的SaaS,它与AWS和Azures很好地集成。
答案 3 :(得分:0)
有很多选择可以做到这一点:
首先,您可以使用已经提到过的ClamAV。 ClamAV并不总能获得最好的病毒数据库,但正如其他人指出的那样,它易于使用且可扩展。
您还可以安装商业扫描仪,例如avg,kaspersky等。其中许多都附带了一个可以直接与之通信的C API,但从许可的角度来看,通常可以获得访问权限。 / p>
或者,您可以使用以下内容直接调用可执行文件来捕获输出:
var proc = new Process {
StartInfo = new ProcessStartInfo {
FileName = "scanner.exe",
Arguments = "arguments needed",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
while (!proc.StandardOutput.EndOfStream) {
string line = proc.StandardOutput.ReadLine();
}
然后,您需要解析输出以获得结果并在您的应用程序中使用它。
最后,现在有一些商业API可用于执行此类操作,例如attachmentscanner(免责声明我与此产品相关)或scanii。这些将为您提供API和更具伸缩性的选项,以扫描特定文件并从至少一个病毒检查引擎接收响应。
答案 4 :(得分:0)
2020年春季/夏季将有新事物出现。Azure存储的高级威胁防护包括恶意软件信誉筛选,该功能利用Microsoft威胁情报的强大功能使用哈希信誉分析来检测恶意软件上传,其中包括对病毒,木马,间谍软件和勒索软件的哈希。注意:无法保证使用哈希信誉分析技术会检测到每种恶意软件。