处理上传的动画 gif 以确保安全

Process uploaded animated gif for security

我们正在开发一个允许动画 GIF 上传的网站。为了确保图像确实是图像并且没有 malware/virus/backdoor/trojan 或图像数据本身以外的任何其他内容,我们尝试重新创建原始图像。

但是,当里面有很多帧时,这个过程本身会花费一些时间。有没有其他方法可以确保上传的动画 GIF 文件不存在上述问题?

您永远无法 100% 保证文件不包含恶意软件 - 即使采用您的方法,gif 也有可能包含一些可能是恶意的代码 simply by opening the image in a vulnerable viewer

也就是说,这种可能性很低,您可以预期在大多数现代操作系统中,这类错误会很快得到修补。

您可以对上传的文件进行各种检查,但处理时间会更少:

  • 检查文件扩展名是否符合您的预期 - 在上传阶段忽略 content-type,因为它可能被欺骗。
  • 病毒使用具有最新定义的病毒扫描程序扫描所有上传的文件。
  • 不要将文件存储在可以执行它们的位置 - 例如不要存储在网络根目录中 (www.example.com/uploads/image.aspx)。
  • 通过从存储中读取文件的程序或脚本提供文件作为数据,然后将输出流式传输到浏览器。
  • 提供文件时,请确保 content-type 正确,如果可能,请正确设置文件扩展名。使用 Content-Disposition 设置浏览器将使用的名称:

    Content-Disposition: attachment; filename="fname.ext"