2011-05-31 62 views
6

有我的网站的一部分,允许用户上传个人资料照片。我担心人们上传恶意代码。我打算限制的文件类型,以JPG格式/巴纽/ .gif注意/ JPEG格式恶意代码通过图片上传

我担心,这将是不够的。我将在服务器上调整图片大小。调整照片大小的过程是否足以确保图像实际上是图像而不是恶意文件?

我将使用以下来调整照片。我不会将原件存储在服务器上,文件名称将会更改。

imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

    imagejpeg($thumb, $fullpath, 90); 

回答

9

简单地做这将确保您在图像上工作:

if (getimagesize($sourcePath) === false) 
{ 
    die("Not an image !"); 
} 

更多的安全,你应该在上传文件夹中禁用PHP执行。 .htaccess:

php_value engine off 
+0

也许某个新来PHP的人发现了这篇文章,你应该把'panic'改成'die',以防他们直接复制并粘贴这段代码! – fire 2011-05-31 09:55:41

+0

我甚至没有考虑禁用PHP执行。谢谢。 – 2011-05-31 17:26:19

-1

这是一个非问题,因为我没有看到它是如何发生的。 不过,我不知道您的AHT功能并(您没有发布源代码)。

只要我知道,这是不可能的注入PHP。你可以注入SQL,使用Javascript,HTML,...

+1

如果网站没有做适当的验证,你可以上传一个php文件。 – 2011-05-31 09:44:43

+1

当然这是一个问题!即使你不能注入PHP(你也可以,但是网站必须编码非常非常好,因为php注入工作在文件上传形式)。 – 2011-05-31 09:50:07

+0

你自己回答了你的问题:“我打算将文件类型限制为JPG,PNG等。”没有什么可做的了。只要你的网络服务器不像PHP那样执行JPG文件,就没有问题。 – tiktak 2012-03-29 13:37:01