会在文件上调用getimagesize()
并检查返回的值是否与false
不同,以确定文件是否为图像?
还有其他可能性来确定文件是否是php中的图像,这些解决方案比简单地检查扩展名更加简单。
答案 0 :(得分:2)
getimagesize()是一个非常可靠的指示,该文件是图像,是的。
它将确定图像是否显示有效标题。
它(通常)不会确定实际图像数据是否有任何损坏,这可能会在加载图像时显示为乱糟糟的图像或错误。
您还可以记住,文件可能是有效的图像文件,但也可能隐藏其他数据 - 在元数据,图像数据或图像数据结束之后。因此,虽然getimagesize()可能会告诉您有一个有效的图像,但这并不一定意味着该文件也不是另一种类型的有效文件。由于JAR和ZIP文件从文件末尾读取,因此文件既可以是有效图像又可以是有效的JAR / ZIP文件,并且JAR文件可以在浏览器中执行 - GIFAR exploit的基础
答案 1 :(得分:1)
找出它是否是受支持的文件格式之一就足够了,是的。它实际上解析文件的头字节,因此非常可靠。
这是PHP内置的最佳使用方法。
ImageMagick's identify
命令等高级工具基本相同 - 仅当您需要支持的文件格式多于getimagesize()
支持的文件格式时才考虑它们(其列表为{{3}在IMAGETYPE_*
常量中)。