代码之家  ›  专栏  ›  技术社区  ›  kemiller2002

确保上传的文件是安全的

  •  10
  • kemiller2002  · 技术社区  · 17 年前

    我的老板来找我,问我如何确保通过网页上传的文件是安全的。他希望人们能够上传pdf和tiff图像(等等),他真正关心的是有人在pdf中嵌入病毒,然后查看/更改(并执行病毒)。我刚刚读到一篇关于一种程序的文章,该程序可以通过改变最不重要的比特来破坏图像中嵌入的速记信息。是否可以使用类似的过程来确认病毒没有被植入?有人知道任何可以擦除文件的程序吗?

    更新: 因此,该团队对此进行了一些争论,一位开发人员发现了一篇关于让文件下载到文件系统并让保护网络的防病毒软件检查那里的文件的帖子。海报基本上说,对于一些产品来说,使用API或命令行太难了。在我看来,这有点笨拙,因为我们计划将文件存储在数据库中,但我以前不必扫描文件中的病毒。有人对此有任何想法或经验吗?

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

    6 回复  |  直到 17 年前
        1
  •  4
  •   pix0r    17 年前

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

        2
  •  3
  •   tqbf    17 年前

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

    处理图像上传的最佳方法是裁剪、缩放并将其转换为不同的图像格式。图像在转换前后应具有不同的大小、哈希值和校验和。例如,为Stack Overflow提供“好友图标”的Gravatar会强制您裁剪图像,然后将其转换为PNG。

    是否有可能构建一个恶意的PDF或DOC文件,利用Word或Acrobat中的漏洞进行攻击?可能。但ClamAV在阻止这些攻击方面不会做得很好;这些不是“病毒”,而是查看器软件中的漏洞。

        3
  •  2
  •   markus    17 年前

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

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

        4
  •  1
  •   TheSmurf    17 年前

    你可能需要将一个真正的病毒扫描程序链接到上传过程中(就像许多病毒扫描程序确保你在浏览器中下载的文件是安全的一样)。

    为了自己做到这一点,你必须保持更新,这意味着要保留病毒定义库,这可能超出了你的应用程序的范围(根据你组织的规模,甚至可能不可行)。

        5
  •  0
  •   pix0r    17 年前

    是的,ClamAV应该扫描文件,而不管扩展名如何。

        6
  •  0
  •   Alex F    17 年前

    使用反向代理设置,例如

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

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

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