确保上传的文件是安全的
我的老板来找我,问如何确保通过网页上传的文件是安全的。他希望人们能够上载pdf和tiff图像(等等),而他真正关心的是有人在pdf中嵌入了病毒,然后可以查看/更改(执行病毒)。我只是读了一些程序,该程序可用于通过更改最不重要的位来破坏图像中包含的速记信息。可以使用类似的过程来确定没有植入病毒吗?有谁知道可以擦洗文件的程序吗?
更新:
因此,团队对此进行了一点争论,一个开发人员发现了一篇有关将文件下载到文件系统并让保护网络的防病毒软件检查其中文件的帖子。张贴者从本质上说,很难将API或者命令行用于几个产品。在我看来,这有点笨拙,因为我们正计划将文件存储在数据库中,但是之前我不必扫描文件中的病毒。有人对此有任何想法或者经验吗?
http://www.softwarebyrob.com/2008/05/15/virus-scanning-from-code/
解决方案
回答
我建议我们通过防病毒软件(例如ClamAV)运行我们上传的文件。我不知道清理文件以删除病毒,但这至少可以让我们在查看文件之前检测并删除受感染的文件。
回答
我们可能需要将实际的病毒扫描程序链接到上传过程(许多病毒扫描程序可以确保在浏览器中下载的文件是安全的)。
为了自己执行此操作,我们必须保持最新状态,这意味着保留病毒定义库,这可能超出了应用程序的范围(根据组织的规模,甚至可能不可行) )。
回答
是的,无论扩展名如何,ClamAV都应扫描文件。
回答
这取决于我们公司的预算,但是可以在Web服务器和外部世界之间放置一些硬件设备和软件应用程序来执行这些功能。其中一些是内置防病毒软件的硬件防火墙。有时将它们称为应用程序网关或者应用程序代理。
以下是使用Clam-AV的开源网关的链接:
http://en.wikipedia.org/wiki/Gateway_Anti-Virus
http://gatewayav.sourceforge.net/faq.html
回答
图像文件中嵌入的病毒不太可能成为我们应用程序的主要问题。 JAR文件将是一个问题。带有JAR预告片的图像文件可以作为Java小程序从Internet上的任何页面加载,并且具有相同来源的绑定(cookie)指向应用程序和服务器。
处理图像上载的最佳方法是裁剪,缩放并将其转换为其他图像格式。图像在转换前后应具有不同的大小,哈希值和校验和。例如,Gravatar为堆栈溢出提供"伙伴图标",它会强制我们裁剪图像,然后将其转换为PNG。
是否可以构造将利用Word或者Acrobat中的漏洞的恶意PDF或者DOC文件?大概。但是ClamAV在阻止这些攻击方面做得不好。这些不是"病毒",而是查看器软件中的漏洞。
回答
使用反向代理设置,例如
www <-> HAVP <->网络服务器
HAVP(http://www.server-side.de/)是一种通过ClamAV或者任何其他商业防病毒软件扫描HTTP流量的方法。这将防止用户下载受感染的文件。
如果需要https或者其他任何内容,则可以将另一个反向代理或者Web服务器置于反向代理模式,该模式可以在HAVP之前处理SSL
但是,它在上载时不起作用,因此不会阻止文件存储在服务器上,而是阻止文件下载并传播。因此,请将其与常规文件扫描(例如clamscan)一起使用。