【发布时间】:2013-03-10 11:20:50
【问题描述】:
我使用下面的代码来测试上传的文件是否确实是图像。 (下面的代码与使用 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 文件。 (失败并回显“NOT AN IMAGE”)
使用记事本制作的 .jpg 文件,其中包含“我是图像”的文字字符。 (失败并回显“NOT AN IMAGE”)
(在我看来,我认为这是成功的,但我知道黑客比我在测试 #3 中所做的更多。)
所以!您认为这足以作为安全检查来验证上传的文件是否确实是图像吗?或者 ImageMagick 中是否有其他工具可以用于此目的?你的想法?
(请不要建议或提及( MIME | EXTENSION | GETIMAGESIZE ),因为它在 stackoverflow 中被反复提及为验证上传文件的无用方法。谢谢)
【问题讨论】:
标签: php image-processing imagemagick security image-uploading