是否有必要使用 PHP 扫描用户通过 html 表单上传的图像?
以下安全措施是否足够:
- 检查文件是否为 MIME/getimagesize((
- 不使用原始文件名
- 调整图像大小 - 不存储原始图像
- htaccess 禁止执行任何非 JPEG/PNG 的内容
是否有必要使用防病毒软件扫描用户的文件?我怎样才能用 PHP 做到这一点?
我正在使用 Ubuntu 14.04 LTS
为什么使用防病毒软件可能有用:
从技术上讲,映像可以利用系统中的漏洞,不仅作为元数据,而且以不同的方式利用,具体取决于打开映像的软件。
例如,第一个PSP漏洞是由于图像查看器解析TIFF图像的方式(http://www.makeuseof.com/tag/how-to-downgrade-your-psp-and-upgrade-to-a-custom-firmware-part-one/#2.00(。
虽然可能不太可能,但库中可能存在调整图像大小的错误/漏洞/后门,因此如果您想走极其谨慎的路线,顺序将是:
- 将映像交给防病毒软件
- 以任何方式处理/存储图像。
您可以使用提供 PHP - 防病毒集成的库,例如:http://sourceforge.net/projects/php-clamav/(但请记住,在将文件交给 AV 时,如果请求排队很长时间,也可能发生 DoS;安全性通常涉及权衡!
注意:让您的库包保持最新比 AV 更长,因为在修改原始映像后,任何漏洞利用都可能被破坏/丢失。
无需防病毒扫描图像。虽然从技术上讲,您可以将病毒放入图像数据中,但它不会在任何地方作为代码执行。您可以做的是剥离元数据,以确保它不用于利用图像查看器中存在的任何错误。
根据您用于处理图片的程序,可能会有删除转化中的元标记的选项。
我个人使用pngcrush或pngquant(用于视网膜图像(来制作我放在网络上的图像。如果您使用imagemagick,则可以使用"-strip"选项。