У меня есть API, который принимает данные изображения с кодировкой base64 и должен будет декодировать данные, сохранить файл изображения, а затем создать эскиз с этого изображения.Проблемы с защитой от 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);