我使用下面的代码来测试上传的文件是否确实是图像。(下面的代码与使用 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');
}
?>
我在上面的代码上尝试了以下内容:
用photoshop cs6制作的.jpg。(它通过并回显了以下细节“810x203 810x203+0+0 8-bit DirectClass 32.4KB 0.000u 0:00.000”)
.txt 文件。(它失败并回显“不是图像”)
使用记事本制作的 .jpg 文件,其中包含写有“我是图像”的文本字符。(它失败并回显“不是图像”)
(在我看来,我认为这是成功的,但我知道黑客所做的比我在测试#3 中所做的更多。)
所以!您认为这足以作为安全检查来验证上传的文件是否确实是图像吗?或者 ImageMagick 中是否有其他工具可以用于此目的?你的意见?
(请不要建议或提及( MIME | EXTENSION | GETIMAGESIZE ),因为它在 stackoverflow 中被反复提及为验证上传文件的无用方法。谢谢)