Php base64编码图像的安全问题

Php base64编码图像的安全问题,php,image,security,gd,Php,Image,Security,Gd,我有一个API,它接受base64编码的图像数据,需要解码数据,保存图像文件,然后从该图像创建缩略图 我担心,如果在尝试创建缩略图之前没有正确验证POST负载的内容,可能会执行恶意代码 到目前为止,我的基本工作流程如下。是否有足够的验证,我不需要担心安全性?我想我担心有人编码了一些不好的东西,当下面的一个图像函数被调用时,互联网爆炸了 <?php $decodedImage = base64_decode($_POST["canvas"]); if ($decodedImage ===

我有一个API,它接受base64编码的图像数据,需要解码数据,保存图像文件,然后从该图像创建缩略图

我担心,如果在尝试创建缩略图之前没有正确验证POST负载的内容,可能会执行恶意代码

到目前为止,我的基本工作流程如下。是否有足够的验证,我不需要担心安全性?我想我担心有人编码了一些不好的东西,当下面的一个图像函数被调用时,互联网爆炸了

<?php

$decodedImage = base64_decode($_POST["canvas"]);
if ($decodedImage === false) {
    // Error out
}

$imageSizeValidation = getimagesizefromstring($decodedImage);
if ($imageSizeValidation[0] < 1 || $imageSizeValidation[1] < 1 || !$imageSizeValidation['mime']) {
    // Error out
}

$tempFilePath = "/tmp/" . microtime(true) . "-canvas-web.jpg";
file_put_contents($tempFilePath, $decodedImage);

$originalWidth = $imageSizeValidation[0];
$originalHeight = $imageSizeValidation[1];
$newWidth = 49;
$newHeight = 49;

$scaleWidth = $newWidth / $originalWidth;
$scaleHeight = $newHeight / $originalHeight;
$scale = min($scaleWidth, $scaleHeight);

$width = (int)($originalWidth * $scale);
$height = (int)($originalHeight * $scale);

$xpos = (int)(($newWidth - $width) / 2);
$ypos = (int)(($newHeight - $height) / 2);

$oldImage = imagecreatefromjpeg($tempFilePath);
$newImage = imagecreatetruecolor($width, $height);
$background = imagecolorallocate($oldImage, 255, 255, 255);

imagefilledrectangle($newImage, 0, 0, $width, $height, $background);

imagecopyresampled($newImage, $oldImage, $xpos, $ypos, 0, 0, $width, $height, $originalWidth, $originalHeight);
imagedestroy($oldImage);

imagejpeg($newImage, "/path/to/new.jpg", 90);

imagedestroy($newImage);

最终没有得到任何答案,因此对于那些对我最终所做的事情感兴趣的人:

在进一步研究之后,我发现我最关心的问题之一是使用内联PHP、Ruby等编码的有效图像文件。例如:最后有以下内容的图像:

<?php phpinfo();