php – 图像上传安全性 – 使用GD重新处理

我听说处理上传图像的最佳方法是使用GD库“重新处理”它们并保存处理过的图像.见:PHP image upload security check list

我的问题是如何在GD中“重新处理”?这究竟意味着什么?我不太了解GD库,我担心我会搞砸它…

所以,如果有人之前做过这个,你能给我一个例子吗?

(我知道,另一个选择是使用ImageMagick.对于ImageMagick,我在这里找到了答案:Remove EXIF data from JPG using PHP,但我现在不能使用ImgMagick.顺便说一下..删除EXIF数据意味着在这种情况下完全重新创建图像?)
(如果有兴趣的话,我正在使用Zend Framework.)

解决方法:

如果用户上传了JPEG文件,您可以执行以下操作来重新处理它:

$newIm = @imagecreatefromjpeg($_FILES['file']['tmp_name']);
if (!$newIm) {
    // gd could not create an image from the source
    // most likely, the file was not a valid jpeg image
}

然后,您可以使用imagedestroy()丢弃$newIm图像并使用用户上传的文件,或者从GD中保存图像并使用它.保存GD图像可能存在一些问题,因为它不是原始图像.

另一个简单的方法是检查图像文件的标题(前几个字节)以确保它是正确的;例如,所有JPEG文件都以0xff 0xd8开头.

另请参阅imagecreatefromstring(),您还可以使用getimagesize()对上载的图像执行类似检查.

上一篇:PHP GD文本不流畅


下一篇:如何在linux ubuntu中启用php 7中的GD库?