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()对上载的图像执行类似检查.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...