ImageMagick的识别是否足以验证图像确实是图像


Is ImageMagick identify enough to verify that the image is indeed an image

我使用下面的代码来测试上传的文件是否确实是图像。(下面的代码与使用ImageMagick时在php网站上发现的OOP风格不同,因为我在共享服务器上,这是使用ImageMagick和实际脚本时提供的指示,将涉及重新路由用户,取消链接或删除上传的文件等,所以请不要批评下面的代码,我只是想停留在使用IMAGICK IDENTIFY作为图像验证工具的概念。)

<?php
if(!exec('/usr/bin/identify /home/user/public_html/joteco_test_folder/thisisanimage.jpg'))
{
echo "NOT AN IMAGE";
}
else
{
echo exec('/path/here/identify /path/here/thisisanimage.jpg');
}
?>

我尝试了下面的代码:

  1. 用photoshop cs6制作的。jpg格式。(它传递并重复以下细节"810x203 810x203+0+0 8-bit DirectClass 32.4KB 0.000u 0:00.000")

  2. txt文件。(失败,提示"NOT AN IMAGE")

  3. 用记事本制作的。jpg文件,上面写着"我是一个图像"。(失败,提示"NOT AN IMAGE")

(在我看来,我认为这是一个成功,但我知道黑客做的比我在测试#3中做的更多。)

如此!您认为这是否足以作为安全检查来验证上传的文件是否确实是图像?或者ImageMagick中是否有其他工具可以用于此目的?你的想法呢?

(请。不要建议或提及(MIME | EXTENSION | GETIMAGESIZE),因为它在stackoverflow中被反复提到,是验证上传文件的无用方法。谢谢你)

这应该能帮到你。

$im = @imagecreatefromjpeg($imgname);
if(!$im)
    {
    return false;
    }
else
    {
            imagedestroy($im);
            return true;
    }

除了检查它是否为图像之外,对于不完整(部分上传)的图像

也返回false