关于安全性:确保上传的文件是安全的

关于安全性:确保上传的文件是安全的

ensuring uploaded files are safe

我的老板来找我,问如何确保通过网页上传的文件是安全的。他希望人们能够上载pdf和tiff图像(等等),而他真正关心的是有人在pdf中嵌入了病毒,然后对其进行查看/更改(并执行了病毒)。我只是读了一些程序,该程序可用于通过更改最不重要的位来破坏图像中包含的速记信息。可以使用类似的过程来确定没有植入病毒吗?有人知道任何可以清理文件的程序吗?

更新:
因此,该团队对此进行了一点争论,一个开发人员找到了一篇有关让文件下载到文件系统并让保护网络的防病毒软件检查其中文件的帖子。张贴者从本质上说,很难将API或命令行用于几个产品。在我看来,这有点笨拙,因为我们计划将文件存储在数据库中,但是之前我不必扫描文件中的病毒。有人对此有任何想法或经验吗?

http://www.softwarebyrob.com/2008/05/15/virus-scanning-from-code/


我建议您通过ClamAV等防病毒软件运行您上传的文件。我不知道清理文件以删除病毒,但这至少可以让您在查看文件之前检测并删除受感染的文件。


图像文件中嵌入的病毒不太可能成为您应用程序的主要问题。 JAR文件将是一个问题。带有JAR预告片的图像文件可以作为Java小程序从Internet上的任何页面加载,并且具有相同来源的绑定(cookie)指向您的应用程序和服务器。

处理图像上载的最佳方法是裁剪,缩放并将其转换为其他图像格式。图像在转换前后应具有不同的大小,哈希值和校验和。例如,Gravatar为堆栈溢出提供"伙伴图标",它会强制您裁剪图像,然后将其转换为PNG。

是否可以构造将利用Word或Acrobat中的漏洞的恶意PDF或DOC文件?大概。但是ClamAV在阻止这些攻击方面做得不好。这些不是"病毒",而是查看器软件中的漏洞。


这取决于您公司的预算,但是可以在Web服务器和外界之间放置一些硬件设备和软件应用程序来执行这些功能。其中一些是内置防病毒软件的硬件防火墙。有时将它们称为应用程序网关或应用程序代理。

以下是使用Clam-AV的开源网关的链接:
http://en.wikipedia.org/wiki/Gateway_Anti-Virus
http://gatewayav.sourceforge.net/faq.html


您可能需要将实际的病毒扫描程序链接到上传过程(许多病毒扫描程序可以确保在浏览器中下载的文件是安全的)。

为了自己执行此操作,您必须保持最新状态,这意味着保留病毒定义库,这可能超出了应用程序的范围(根据组织的规模,甚至可能不可行) )。


使用反向代理设置,例如

www <-> HAVP <->网络服务器

HAVP(http://www.server-side.de/)是一种通过ClamAV或任何其他商业防病毒软件扫描http流量的方法。这将防止用户下载受感染的文件。
如果需要https或其他任何内容,则可以将另一个反向代理或Web服务器置于反向代理模式,该模式可以在HAVP之前处理SSL

但是,它在上载时不起作用,因此它不会阻止文件存储在服务器上,而是会阻止文件下载并因此传播。因此,请将其与常规文件扫描(例如clamscan)一起使用。


是的,无论扩展名如何,ClamAV都应扫描文件。


推荐阅读