使用getimagesize()来确定文件是否是图像

时间:2011-09-16 07:47:07

标签: php gd

会在文件上调用getimagesize()并检查返回的值是否与false不同,以确定文件是否为图像?

还有其他可能性来确定文件是否是php中的图像,这些解决方案比简单地检查扩展名更加简单。

2 个答案:

答案 0 :(得分:2)

getimagesize()是一个非常可靠的指示,该文件是图像,是的。

它将确定图像是否显示有效标题。

它(通常)不会确定实际图像数据是否有任何损坏,这可能会在加载图像时显示为乱糟糟的图像或错误。

您还可以记住,文件可能是有效的图像文件,但也可能隐藏其他数据 - 在元数据,图像数据或图像数据结束之后。因此,虽然getimagesize()可能会告诉您有一个有效的图像,但这并不一定意味着该文件也不是另一种类型的有效文件。由于JAR和ZIP文件从文件末尾读取,因此文件既可以是有效图像又可以是有效的JAR / ZIP文件,并且JAR文件可以在浏览器中执行 - GIFAR exploit的基础

答案 1 :(得分:1)

找出它是否是受支持的文件格式之一就足够了,是的。它实际上解析文件的头字节,因此非常可靠。

这是PHP内置的最佳使用方法。

ImageMagick's identify命令等高级工具基本相同 - 仅当您需要支持的文件格式多于getimagesize()支持的文件格式时才考虑它们(其列表为{{3}在IMAGETYPE_*常量中)。