अद्यतन 13/07/2017 [जारी है]
मैगेंटो टीम ने पैच के इस संस्करण में SUPEE-9767 V2 को पारदर्शी gif और png की समस्या के साथ जारी किया है।
आपको इस थ्रेड में चर्चा की गई फ़ाइल के सभी परिवर्तनों को वापस करना चाहिए। फिर लागू V1 पैच को वापस करें और अंत में नया संस्करण V2 लागू करें।
PRE - SUPEE-9767 V2
कृपया कोड का उपयोग न करें चर्चा की गई जगह पर पैच के V2 को लागू करें चर्चा की गई समस्या इस संस्करण में पहले से तय है
अगर किसी को पारदर्शी पीएनजी के साथ समस्या का अनुभव होता है, जब व्यवस्थापक पैनल से अपलोड किया जाता है तो पृष्ठभूमि काली हो जाती है। (उत्पादों पर) छवि अपलोड कॉलबैक के संबंध में है:
app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php
फिलहाल मुझे यकीन नहीं है कि वास्तव में इस व्यवहार के कारण क्या है लेकिन मैं यह पता लगाने की कोशिश कर रहा हूं कि मैं पुष्टि कर सकता हूं कि जब कॉलबैक हटा दिया जाता है तो अजीब व्यवहार दूर हो रहा है।
अपडेट करें
ठीक है, मुझे वह फ़ंक्शन मिला जो SUPEE-9767 से भी अपडेट किया गया है, यह वास्तव में 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.'));
अपडेट करें
यहाँ png पारदर्शिता को बनाए रखने के लिए फ़ंक्शन का अद्यतन संस्करण है
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.'));
}
UPDATE 23/06/17
फ़ंक्शन का यह अपडेट किया गया संस्करण PNG और GIF पारदर्शिता को ठीक करता है।
/**
* 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.'));
}