C# 文件上传到服务器。我需要检查病毒吗?

C# 文件上传到服务器。我需要检查病毒吗?,c#,asp.net,windows-server-2012,C#,Asp.net,Windows Server 2012,一个提议中的网站将允许人们注册工作,并在注册时上传简历。然后,第三方使用自动ftp传输从服务器上获取CV,并将其存储在服务器上。最终用户,然后下载所述文件以在其PC上打开 第三方表示,他们不检查文件中的病毒,他们认为这是文件传输双方的责任 如果我采取同样的方法,并说最终用户在上传/下载文件时扫描这些文件,那么托管该网站的服务器是否存在感染风险 文件扩展名可能限制为.pdf、.txt.doc等 如果可能的话,我想避免找一个可以编写脚本实时扫描文件的防病毒产品的麻烦。警告最终用户 你无法确保下载这些

一个提议中的网站将允许人们注册工作,并在注册时上传简历。然后,第三方使用自动ftp传输从服务器上获取CV,并将其存储在服务器上。最终用户,然后下载所述文件以在其PC上打开

第三方表示,他们不检查文件中的病毒,他们认为这是文件传输双方的责任

如果我采取同样的方法,并说最终用户在上传/下载文件时扫描这些文件,那么托管该网站的服务器是否存在感染风险

文件扩展名可能限制为.pdf、.txt.doc等


如果可能的话,我想避免找一个可以编写脚本实时扫描文件的防病毒产品的麻烦。

警告最终用户

你无法确保下载这些文件的人是安全的,即使用AV扫描所有这些文件也不行

如果您可以向该服务器添加一个AV(WinServer2012不附带集成的Windows Defender吗?),显然会更好

然而,虽然这可能很好,给用户一种专业的感觉,增加了安全性的错觉,但最终用户有责任确保他受到保护。即使是最受信任的网站也可能会出现一些被劫持的附加信息,从而感染访问者

在用户开始任何下载之前,请向其明确说明这些文件是由不受您控制的第三方提供的

我想这就够了

附加步骤


您可以将文件类型限制为PDF,TXT文件不是很专业,所有主要的Office应用程序(免费提供)都提供了导出为PDF的方式(因此不需要文档文件)。这减少了攻击面,您甚至可以实现自己扫描这些PDF文件的方式。应该有C#库能够读取这些PDF文件并提取任何可疑内容进行验证,这是一个很好的例子。

看看您是否接受用户的任意文件,然后允许其他用户下载这些相同的文件-当然,您应该确保这些文件没有危险。但最终托管文件的第三方显然不这么认为。验证文件类型有自己的问题。现在,您的应用程序代码正在打开用户提交的文件……有人可能会潜入该文件中进行攻击。这是对的@mason,尽管他从客户端计算机下载到网站时已经“打开”了这些文件。有很多方法可以利用这样的网站,不仅仅是在文件内容级别。他必须至少部分验证客户端发送给他的数据,不是吗?复制字节与使用库打开字节并实际解析内容并不相同。假设您收到一个扩展名为.pdf的文件,因此尝试使用iTextSharp打开该文件以验证其是否为有效的pdf。现在,攻击者可以利用iTextSharp中的任何安全漏洞。而且它不需要攻击者掌握那么多知识就可以利用。这是一个很受欢迎的图书馆,通常不难有根据地猜测网站使用的技术堆栈。当然,虽然很难做到,但如果不采取预防措施,即使是简单的文件上传也可以被利用。无论如何,扫描这些文件并不是为了快速解决更大的问题。然而,如果不能使用AV,这是一种可能的折衷方案,但用户仍然需要某种额外的验证。这显然有它自己的缺点。谢谢你的建议。文件的下载将通过最终托管文件的第三方提供的单独CRM应用程序进行,因此我无法控制任何警告等。。我猜并不是所有有简历的用户都能导出为PDF格式,他们可能觉得这种方法不可接受。我同意打开文件可能会给服务器带来风险。我认为最初的解决方案与该建议类似——警告用户不要上传受感染的文件,并口头告诉CRM用户(我的客户)他们需要检查文件是否有病毒。