আপডেট 13/07/2017 [সমস্যা সংশোধন করা হয়েছে]
ম্যাজেন্টো টিম এই প্যাচের এই সংস্করণে SUPEE-9767 V2 প্রকাশ করেছে স্বচ্ছ জিআইএফ এবং পিএনজি'র সমস্যাটি স্থির হয়েছে।
এই থ্রেডে আলোচিত ফাইলটিতে আপনার সমস্ত পরিবর্তন ফিরিয়ে নেওয়া উচিত। তারপরে প্রয়োগ করা ভি 1 প্যাচটি ফিরিয়ে দিন এবং শেষ পর্যন্ত নতুন সংস্করণ ভি 2 প্রয়োগ করুন।
প্রাক - সুপারি -7967 ভি 2
দয়া করে আলোচিত বেলো কোডটি ব্যবহার করবেন না পরিবর্তে এই সংস্করণে আলোচিত বেলো সমস্যাটি ইতিমধ্যে ঠিক করা প্যাচের ভি 2 প্রয়োগ করুন
যদি কারও স্বচ্ছ পিএনজি-তে সমস্যা হয় যা অ্যাডমিন প্যানেল থেকে আপলোড করা হয় তখন পটভূমি কালো হয়ে যায়। (পণ্যগুলিতে) এর সাথে পরিচয় হওয়া চিত্র আপলোড কলব্যাকের সাথে সম্পর্কিত:
app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php
এই আচরণটি ঠিক কী কারণে ঘটছে এই মুহুর্তে আমি নিশ্চিত নই তবে আমি এটি নির্ধারণের চেষ্টা করছি আমি নিশ্চিত করতে পারি যে কলব্যাকটি সরিয়ে দিলে আজব আচরণটি চলে যাচ্ছে।
হালনাগাদ
ঠিক আছে, আমি ফাংশনটি পেয়েছি যাও সুপার -UP 976767 থেকে আপডেট হয়েছে এটি প্রকৃতপক্ষে স্বচ্ছতা ভঙ্গ করছে png এর মূল চিত্রটির একটি অনুলিপি স্বচ্ছতা ছাড়াই তৈরি করা হয়েছে।
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -87,10 +87,33 @@ public function setAllowedImageTypes(array $imageFileExtensions = array())
*/
public function validate($filePath)
{
- $fileInfo = getimagesize($filePath);
- if (is_array($fileInfo) and isset($fileInfo[2])) {
- if ($this->isImageType($fileInfo[2])) {
- return null;
+ list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
+ if ($fileType) {
+ if ($this->isImageType($fileType)) {
+ //replace tmp image with re-sampled copy to exclude images with malicious data
+ $image = imagecreatefromstring(file_get_contents($filePath));
+ if ($image !== false) {
+ $img = imagecreatetruecolor($imageWidth, $imageHeight);
+ imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
+ switch ($fileType) {
+ case IMAGETYPE_GIF:
+ imagegif($img, $filePath);
+ break;
+ case IMAGETYPE_JPEG:
+ imagejpeg($img, $filePath, 100);
+ break;
+ case IMAGETYPE_PNG:
+ imagepng($img, $filePath);
+ break;
+ default:
+ return;
+ }
+ imagedestroy($img);
+ imagedestroy($image);
+ return null;
+ } else {
+ throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
+ }
}
}
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
হালনাগাদ
পিএনজি স্বচ্ছতা সংরক্ষণের জন্য এখানে ফাংশনের আপডেট সংস্করণ রয়েছে
imagealphablending($img, false);
imagesavealpha($img, true);
এই দুটি লাইন প্যাচ যুক্ত করা প্রয়োজন। ফাংশন আপডেট করুনapp/code/core/Mage/Core/Model/File/Validator/Image.php
/**
* Validation callback for checking is file is image
*
* @param string $filePath Path to temporary uploaded file
* @return null
* @throws Mage_Core_Exception
*/
public function validate($filePath)
{
list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
if ($fileType) {
if ($this->isImageType($fileType)) {
//replace tmp image with re-sampled copy to exclude images with malicious data
$image = imagecreatefromstring(file_get_contents($filePath));
if ($image !== false) {
$img = imagecreatetruecolor($imageWidth, $imageHeight);
imagealphablending($img, false);
imagesavealpha($img, true);
imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
switch ($fileType) {
case IMAGETYPE_GIF:
imagegif($img, $filePath);
break;
case IMAGETYPE_JPEG:
imagejpeg($img, $filePath, 100);
break;
case IMAGETYPE_PNG:
imagepng($img, $filePath);
break;
default:
return;
}
imagedestroy($img);
imagedestroy($image);
return null;
} else {
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
}
}
}
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
}
আপডেট 23/06/17
ফাংশনের এই আপডেট হওয়া সংস্করণটি পিএনজি এবং জিআইএফ স্বচ্ছতার বিষয়টি স্থির করে।
/**
* Validation callback for checking is file is image
*
* @param string $filePath Path to temporary uploaded file
* @return null
* @throws Mage_Core_Exception
*/
public function validate($filePath)
{
list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
if ($fileType) {
if ($this->isImageType($fileType)) {
//replace tmp image with re-sampled copy to exclude images with malicious data
$image = imagecreatefromstring(file_get_contents($filePath));
if ($image !== false) {
$img = imagecreatetruecolor($imageWidth, $imageHeight);
switch ($fileType) {
case IMAGETYPE_GIF:
imagecolortransparent($img, imagecolorallocatealpha($img, 0, 0, 0, 127));
imagealphablending($img, false);
imagesavealpha($img, true);
imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
imagegif($img, $filePath);
break;
case IMAGETYPE_JPEG:
imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
imagejpeg($img, $filePath, 100);
break;
case IMAGETYPE_PNG:
imagealphablending($img, false);
imagesavealpha($img, true);
imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
imagepng($img, $filePath);
break;
default:
return;
}
imagedestroy($img);
imagedestroy($image);
return null;
} else {
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
}
}
}
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
}