是否有必要对PHP图像上传进行防病毒检查?

时间:2014-12-09 19:46:12

标签: php image .htaccess security upload

是否有必要使用PHP扫描用户通过html表单上传的图像?

以下安全措施是否足够:

    检查
  • 文件是否为MIME / getimagesize()
  • 未使用原始文件名
  • 调整图像大小 - 原件未存储
  • htaccess禁止执行任何非JPEG / PNG
  • 的内容

是否有必要使用防病毒软件扫描用户的文件?我怎么能用PHP做到这一点?

我使用的是Ubuntu 14.04 LTS

2 个答案:

答案 0 :(得分:1)

为什么使用防病毒软件非常有用:

从技术上讲,图像可以利用系统中的漏洞,而不仅仅是元数据,而是以不同的方式,具体取决于打开图像的软件。

例如,第一个PSP漏洞之一是由于图像查看器解析TIFF图像(http://www.makeuseof.com/tag/how-to-downgrade-your-psp-and-upgrade-to-a-custom-firmware-part-one/#2.00)的方式。

虽然可能不太可能,但是库中可能存在调整图像大小的错误/漏洞/后门,因此如果您想要采用非常谨慎的路线,则顺序为:

  1. 将图像传递给防病毒软件
  2. 以任何方式处理/存储图像。
  3. 您可以使用提供PHP的库 - 防病毒集成,例如:http://sourceforge.net/projects/php-clamav/(但请记住,如果请求在将文件传输到AV时长时间排队,也可能发生DoS;安全性经常涉及权衡!)。

    注意:让您的图书馆软件包保持最新状态比AV更长,因为在修改原始图像后,任何漏洞利用都可能会被破坏/丢失。

答案 1 :(得分:0)

无需防病毒扫描图像。虽然技术上可以将病毒放入图像数据中,但它不会像任何地方一样被执行。您可以做的是剥离元数据,以确保它不用于利用图像查看器中存在的任何错误。

根据您用于处理图片的程序,可能会有选项删除转化中的元标记。

我个人使用pngcrush或pngquant(用于视网膜图像)我放在网上的图像。如果您使用imagemagick,则可以使用“-strip”选项。