Bản vá bảo mật SUPEE-10752 - Các vấn đề có thể xảy ra?


14

Một bản vá bảo mật mới đã được phát hành cho Magento 1, giải quyết 25 vấn đề APPSEC

https://magento.com/security/patches/supee-10752

Những vấn đề phổ biến nào bạn phải đề phòng khi áp dụng bản vá này?

SUPEE-10752, Magento Commerce 1.14.3.9 và Mã nguồn mở 1.9.3.9 chứa nhiều cải tiến bảo mật giúp đóng thực thi mã từ xa của người dùng Admin (RCE), giả mạo yêu cầu chéo trang (CSRF) và các lỗ hổng khác.

Thông tin về tất cả các thay đổi trong bản phát hành 1.14.3.9 và 1.9.3.9 có sẵn trong ghi chú phát hành Nguồn mở Magento Commerce và Magento.

Các bản vá và nâng cấp có sẵn cho các phiên bản Magento sau:

Magento Commerce 1.9.0.0-1.14.3.9: SUPEE-10752 hoặc nâng cấp lên Magento Commerce 1.14.3.9.

Mã nguồn mở Magento 1.5.0.0-1.9.3.9: SUPEE-10752 hoặc nâng cấp lên Mã nguồn mở Magento 1.9.3.9.


Vấn đề gặp phải chi tiết trong tài liệu này - magento.stackexchange.com/questions/248229/iêu
Shrenik

Câu trả lời:


19

Như được đề cập bởi Docs Docs By Magento :

Xung đột trong quá trình cài đặt bản vá SUPEE-10752 được gây ra thường xuyên nhất do cài đặt phiên bản 1 của bản vá trước đó ( SUPEE-10570v1 ).

Vui lòng đảm bảo xóa SUPEE-10570v1 và cài đặt SUPEE-10570v2 trước khi cài đặt SUPEE-10752 mới.


11

Các tập tin dưới đây được thay đổi / tạo sau khi áp dụng bản vá

app/code/core/Mage/Admin/Model/User.php
app/code/core/Mage/Adminhtml/Block/Catalog/Product/Composite/Fieldset/Options.php
app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php
app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Datetime.php
app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController.php
app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php
app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php
app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php
app/code/core/Mage/Adminhtml/controllers/CustomerController.php
app/code/core/Mage/Adminhtml/controllers/System/StoreController.php
app/code/core/Mage/Catalog/Model/Product.php
app/code/core/Mage/Catalog/Model/Resource/Category/Tree.php
app/code/core/Mage/Checkout/Model/Api/Resource/Customer.php
app/code/core/Mage/Checkout/Model/Type/Onepage.php
app/code/core/Mage/Checkout/controllers/CartController.php
app/code/core/Mage/Core/Helper/Http.php
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
app/code/core/Mage/Customer/Helper/Data.php
app/code/core/Mage/Customer/Model/Resource/Customer.php
app/code/core/Mage/Customer/controllers/AccountController.php
app/code/core/Mage/Log/Model/Visitor.php
app/code/core/Mage/Usa/Helper/Data.php
app/code/core/Mage/Usa/Model/Shipping/Carrier/Abstract/Backend/Abstract.php
app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/Freemethod.php
app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/OriginShipment.php
app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/Type.php
app/code/core/Mage/Usa/etc/system.xml
app/code/core/Zend/Filter/PregReplace.php
app/code/core/Zend/Validate/EmailAddress.php
app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml

app/design/adminhtml/default/default/template/system/shipping/ups.phtml
app/design/frontend/base/default/template/downloadable/catalog/product/links.phtml
app/design/frontend/base/default/template/downloadable/checkout/cart/item/default.phtml
app/design/frontend/base/default/template/downloadable/checkout/onepage/review/item.phtml
app/design/frontend/base/default/template/downloadable/sales/order/items/renderer/downloadable.phtml
app/design/frontend/rwd/default/template/downloadable/checkout/cart/item/default.phtml
app/design/frontend/rwd/default/template/downloadable/checkout/onepage/review/item.phtml
app/design/frontend/rwd/default/template/downloadable/sales/order/items/renderer/downloadable.phtml
app/locale/en_US/Mage_Catalog.csv
app/locale/en_US/Mage_Usa.csv
cron.php
js/tiny_mce/plugins/media/.htaccess
lib/Varien/Image/Adapter/Gd2.php

Đối với Phiên bản EE, các tệp bên dưới được thêm vào ngoài CE

app/code/core/Enterprise/CatalogEvent/Block/Adminhtml/Event/Grid.php
app/code/core/Enterprise/GiftRegistry/Block/Adminhtml/Giftregistry/Edit/Attribute/Attribute.php
app/code/core/Enterprise/GiftRegistry/Model/Attribute/Processor.php
app/code/core/Enterprise/Invitation/Block/Adminhtml/Invitation/Grid.php
app/code/core/Enterprise/Logging/Block/Adminhtml/Details/Renderer/Diff.php
app/code/core/Enterprise/Reward/Block/Adminhtml/Customer/Edit/Tab/Reward/History/Grid/Column/Renderer/Reason.php
app/code/core/Enterprise/TargetRule/Model/Rule.php
app/code/core/Enterprise/TargetRule/controllers/Adminhtml/TargetruleController.php
app/design/adminhtml/default/default/template/enterprise/cms/page/revision/info.phtml

app/design/frontend/enterprise/default/template/cms/hierarchy/pagination.phtml
app/design/frontend/enterprise/iphone/template/downloadable/checkout/cart/item/default.phtml
app/design/frontend/enterprise/iphone/template/downloadable/checkout/onepage/review/item.phtml
app/design/frontend/rwd/enterprise/template/cms/hierarchy/pagination.phtml

ứng dụng / mã / lõi / Pháp sư / Quản trị viên / Người mẫu / Người dùng.php

+            $sessionUser = $this->getSession()->getUser();
+            if ($sessionUser && $sessionUser->getId() == $this->getId()) {
+                $this->getSession()->setUserPasswordChanged(true);
+            }


+    /**
+     * @return Mage_Admin_Model_Session
+     */
+    protected function getSession()
+    {
+        return  Mage::getSingleton('admin/session');
+    }
+

ứng dụng / mã / lõi / Mage / adminhtml / Block / Widget / Grid / Cột / Filter / Datetime.php

                     $this->getLocale()->getDateTimeFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT)
                 );
             }
-            return $value;
+            return $this->escapeHtml($value);
         }

-        return parent::getEscapedValue($index);
+        return $this->escapeHtml(parent::getEscapedValue($index));
     }
-
 }

ứng dụng / mã / lõi / Mage / adminhtml / bộ điều khiển / Danh mục / CategoryContoder.php

+            if (isset($data['general']['path'])) {
+                unset($data['general']['path']);
+            }

ứng dụng / mã / lõi / Mage / adminhtml / bộ điều khiển / Danh mục / ProductContoder.php

+                $product->validate();

ứng dụng / mã / lõi / Mage / adminhtml / bộ điều khiển / Cms / Wysiwyg / ImagesContoder.php

+            $this->getResponse()->setHeader('Content-type', $image->getMimeTypeWithOutFileType());

ứng dụng / mã / lõi / Mage / adminhtml / bộ điều khiển / Cms / WysiwygControll.php

+        $this->getResponse()->setHeader('Content-type', $image->getMimeTypeWithOutFileType());

ứng dụng / mã / lõi / Mage / adminhtml / bộ điều khiển / CustomerControll.php

+                    $customer->setPasswordCreatedAt(time());

ứng dụng / mã / lõi / Mage / adminhtml / bộ điều khiển / Hệ thống / StoreControll.php

+   /**
+     * Controller predispatch method
+     *
+     * @return Mage_Adminhtml_Controller_Action
+     */
+    public function preDispatch()
+    {
+        $this->_setForcedFormKeyActions(array('deleteWebsitePost', 'deleteGroupPost', 'deleteStorePost'));
+        return parent::preDispatch();
+    }

ứng dụng / mã / lõi / Pháp sư / Danh mục / Mô hình / Sản phẩm.php

+                        if (!empty($option['file_extension'])) {
+                            $fileExtension = $option['file_extension'];
+                            if (0 !== strcmp($fileExtension, Mage::helper('core')->removeTags($fileExtension))) {
+                                Mage::throwException(Mage::helper('catalog')->__('Invalid custom option(s).'));
+                            }
+                        }

ứng dụng / mã / lõi / Pháp sư / Danh mục / Mô hình / Tài nguyên / Danh mục / Tree.php

+            if (!preg_match("#^[0-9\/]+$#", $item['path'])) {
+                $item['path'] = '';
+            }

ứng dụng / mã / lõi / Pháp sư / Thanh toán / Mô hình / Api / Tài nguyên / Khách hàng.php

+        $customer->setPasswordCreatedAt(time());

Bất cứ ai ghi đè tập tin onepage.php xin vui lòng cập nhật tập tin.

ứng dụng / mã / lõi / Pháp sư / Thanh toán / Mô hình / Loại / Onepage.php

  +        $passwordCreatedTime = $this->_checkoutSession->getData('_session_validator_data')['session_expire_timestamp']
    +            - Mage::getSingleton('core/cookie')->getLifetime();
    +        $customer->setPasswordCreatedAt($passwordCreatedTime);

Để thêm xác thực khóa Vui lòng kiểm tra biểu mẫu giỏ hàng của bạn có khóa biểu mẫu

ứng dụng / mã / lõi / Mage / Checkout / bộ điều khiển / CartContoder.php

+        if (!$this->_validateFormKey()) {
+            $this->_redirect('*/*/');
+            return;
+        }
+

ứng dụng / mã / lõi / Pháp sư / Lõi / Người trợ giúp / Http.php

-                if ($this->_getRequest()->getServer($var, false)) {
+                if ($var != 'REMOTE_ADDR' && $this->_getRequest()->getServer($var, false)) {

+        if (strpos($this->_remoteAddr, ',') !== false) {
+            $ipList = explode(',', $this->_remoteAddr);
+            $this->_remoteAddr = trim(reset($ipList));
+        }
+

ứng dụng / mã / lõi / Pháp sư / Lõi / Mô hình / Phiên / Tóm tắt / Varien.php

+    const VALIDATOR_PASSWORD_CREATE_TIMESTAMP   = 'password_create_timestamp';

+    /**
+     * Use password creation timestamp in validator key
+     *
+     * @return bool
+     */
+    public function useValidateSessionPasswordTimestamp()
+    {
+        return true;
+    }
+

+        if ($this->useValidateSessionPasswordTimestamp()
+            && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
+            && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
+            && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
+            > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
+        ) {
+            return false;
+        }

+        if (isset($this->_data['visitor_data']['customer_id'])) {
+            $parts[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP] =
+                Mage::helper('customer')->getPasswordTimestamp($this->_data['visitor_data']['customer_id']);
+        }
+

ứng dụng / mã / lõi / Pháp sư / Khách hàng / Người trợ giúp / Dữ liệu.php

+    /**
+     * Get customer password creation timestamp or customer account creation timestamp
+     *
+     * @param $customerId
+     * @return int
+     */
+    public function getPasswordTimestamp($customerId)
+    {
+        /** @var $customer Mage_Customer_Model_Customer */
+        $customer = Mage::getModel('customer/customer')
+            ->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
+            ->load((int)$customerId);
+        $passwordCreatedAt = $customer->getPasswordCreatedAt();
+
+        return is_null($passwordCreatedAt) ? $customer->getCreatedAtTimestamp() : $passwordCreatedAt;
+    }
+

ứng dụng / mã / lõi / Pháp sư / Khách hàng / Mô hình / Tài nguyên / Khách hàng.php

-        $customer->setPassword($newPassword);
+        $customer->setPassword($newPassword)->setPasswordCreatedAt(time());
+        $this->saveAttribute($customer, 'password_created_at');
app/code/core/Mage/Customer/controllers/AccountController.php

+                $customer->setPasswordCreatedAt(time());



-        if (!$this->getCustomerId() && $customer = $observer->getEvent()->getCustomer()) {
+        if ($customer = $observer->getEvent()->getCustomer()) {

> app/code/core/Mage/Log/Model/Visitor.php

    -        if (!$this->getCustomerId() && $customer = $observer->getEvent()->getCustomer()) {
    +        if ($customer = $observer->getEvent()->getCustomer()) {

ứng dụng / mã / lõi / Pháp sư / Hoa Kỳ / Người trợ giúp / Dữ liệu.php

+
+    /**
+     * Validate ups type value
+     *
+     * @param $valueForCheck string ups type value for check
+     *
+     * @return bool
+     */
+    public function validateUpsType($valueForCheck) {
+        $result = false;
+        $sourceModel = Mage::getSingleton('usa/shipping_carrier_ups_source_type');
+        foreach ($sourceModel->toOptionArray() as $allowedValue) {
+            if (isset($allowedValue['value']) && $allowedValue['value'] == $valueForCheck) {
+                $result = true;
+                break;
+            }
+        }
+        return $result;
+    }
 }

cron.php

cron.php: xử lý ngoại lệ trong tệp cron.php

-Mage::app('admin')->setUseSessionInUrl(false);
+try {
+    Mage::app('admin')->setUseSessionInUrl(false);
+} catch (Exception $e) {
+    Mage::printException($e);
+    exit;
+}

lib / Varien / Hình ảnh / Bộ chuyển đổi / Gd2.php

GD2: trả về loại mime thực.

+        header("Content-type: ".$this->getMimeTypeWithOutFileType());

+
+    /**
+     * Gives real mime-type with not considering file type field
+     *
+     * @return string
+     */
+    public function getMimeTypeWithOutFileType()
+    {
+        return $this->_fileMimeType;
+    }
 }

js / tiny_mce / plugin / media / .htaccess

Nếu bạn sử dụng nginx thay vì Apache, hãy đảm bảo bạn cập nhật cấu hình của mình để nhân đôi thay đổi này.

+<IfModule mod_rewrite.c>
+    <Files moxieplayer.swf>
+        RewriteEngine on
+        RewriteCond %{QUERY_STRING} !^$
+        RewriteRule ^(.*)$ %{REQUEST_URI}? [R=301,L]
+    </Files>
+</IfModule>

ứng dụng / thiết kế / adminhtml / mặc định / mặc định / mẫu / hệ thống / giao hàng / up.phtml

+if (!in_array($storedOriginShipment, array_keys($orShipArr))) {
+    $storedOriginShipment = '';
+}

+if ($storedFreeShipment != '' && !in_array($storedFreeShipment, array_keys($defShipArr))) {
+    $storedFreeShipment = '';
+}

+if (!Mage::helper('usa')->validateUpsType($storedUpsType)) {
+    $storedUpsType = '';
+}

Phương thức vận chuyển các tệp mới được thêm / cập nhật là:

app/code/core/Mage/Usa/Helper/Data.php
app/code/core/Mage/Usa/Model/Shipping/Carrier/Abstract/Backend/Abstract.php
app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/Freemethod.php
app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/OriginShipment.php
app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/Type.php

Tập tin Escapehtml:

Các tệp frontend sản phẩm có thể tải xuống: Bất kỳ ai sử dụng sản phẩm có thể tải xuống, vui lòng cập nhật các tệp trong tệp chủ đề của bạn.

ứng dụng / thiết kế / frontend / cơ sở / mặc định / mẫu / có thể tải xuống / danh mục / sản phẩm / links.phtml

Kiểm tra mã

<dt><label<?php if ($_isRequired) echo ' class="required"' ?>><?php if ($_isRequired) echo '<em>*</em>' ?><?php echo
    > $this->getLinksTitle() ?></label></dt>

Thay thế bằng

<dt><label<?php if ($_isRequired) echo ' class="required"' ?>><?php if ($_isRequired) echo '<em>*</em>' ?><?php echo
    > $this->escapeHtml($this->getLinksTitle()); ?></label></dt>

ứng dụng / thiết kế / frontend / cơ sở / mặc định / mẫu / có thể tải xuống / thanh toán / giỏ hàng / mặt hàng / default.phtml

Kiểm tra mã

<dt><?php echo $this->getLinksTitle() ?></dt>

Thay thế bằng

 <dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

ứng dụng / thiết kế / frontend / cơ sở / mặc định / mẫu / có thể tải xuống / bán hàng / đặt hàng / mặt hàng / renderer / downloadable.phtml

Kiểm tra mã

<dt><?php echo $this->getLinksTitle() ?></dt>

Thay thế bằng

<dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

ứng dụng / thiết kế / frontend / default / iphone / template / downloadable / checkout / cart / item / default.phtml

Kiểm tra mã

<dt><?php echo $this->getLinksTitle() ?></dt>

Thay thế bằng

<dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

ứng dụng / thiết kế / frontend / default / iphone / template / downloadable / checkout / onepage / review / item.phtml Kiểm tra mã

`<dt><?php echo $this->getLinksTitle() ?></dt>`

Thay thế bằng

`<dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>`

ứng dụng / thiết kế / frontend / rwd / default / template / downloadable / checkout / cart / item / default.phtml Kiểm tra mã

`<dt><?php echo $this->getLinksTitle() ?></dt>`

Thay thế bằng

`<dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>`

ứng dụng / thiết kế / frontend / rwd / default / template / downloadable / checkout / onepage / review / item.phtml

Kiểm tra mã

<dt><?php echo $this->getLinksTitle() ?></dt>

Thay thế bằng

<dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

ứng dụng / thiết kế / frontend / rwd / default / template / downloadable / sales / order / items / renderer / downloadable.phtml

Kiểm tra mã

<dt><?php echo $this->getLinksTitle() ?></dt>

Thay thế bằng

<dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

Các tệp Escapehtml khác:

ứng dụng / mã / lõi / Pháp sư / adminhtml / Khối / Danh mục / Sản phẩm / Kết hợp / Fieldset / Tùy chọn.php

+        if (!empty($option['file_extension'])) {
+            $option['file_extension'] = $this->escapeHtml($option['file_extension']);
+        }

ứng dụng / mã / lõi / Pháp sư / adminhtml / Khối / Danh mục / Sản phẩm / Chỉnh sửa / Tab / Tùy chọn / Tùy chọn.php

-                    $value['file_extension'] = $option->getFileExtension();
+                    $value['file_extension'] = $this->escapeHtml($option->getFileExtension());

ứng dụng / thiết kế / frontend / doanh nghiệp / mặc định / mẫu / cms / phân cấp / pagination.phtml

-    <li><a title="<?php echo $this->escapeHtml($node->getLabel())?>" href="<?php echo $node->getUrl()?>"><?php echo $this->getNodeLabel($node)?></a></li>

+    <li><a title="<?php echo $this->escapeHtml($node->getLabel())?>" href="<?php echo $node->getUrl()?>"><?php echo $this->escapeHtml($this->getNodeLabel($node)); ?></a></li>

trong ứng dụng / mã / lõi / Mage / Checkout / bộ điều khiển / CartContoder.php, bạn thường thấy lỗi Form-key trên trang nào?
Biểu tượng

1
Tôi không thấy bất kỳ lỗi khóa hình thức. nếu bất cứ ai ghi đè tập tin mặc định / template / checkout / cart.phtml và bỏ lỡ formkey. Nó sẽ thông qua chuyển hướng trang chủ không thông qua lỗi. nó là một danh sách kiểm tra nếu xảy ra lỗi, vui lòng kiểm tra khóa biểu mẫu :). Cảm ơn bạn đã đặt câu hỏi :)
Rama Chandran M

1
Tôi không nghĩ rằng nó rất hữu ích để gửi tất cả các bản vá khác nhau ở đây. Tôi quan tâm nhiều hơn đến các vấn đề thực tế có thể xảy ra ...
7ochem 11/07/18

1
Cảm ơn bạn đã bình luận. Tôi cảm thấy nó hữu ích cho những người khác vì dễ dàng tìm thấy các tập tin đã thay đổi và những thay đổi mã lõi là gì. Ví dụ ứng dụng / thiết kế / frontend / rwd / default / template / downloadable / checkout / onepage / review / item.phtml giả sử chúng tôi ghi đè trong chủ đề của bạn chỉ cần thay đổi mã Easiy, nó cũng giống như danh sách kiểm tra.
Rama Chandran M

8

Việc sửa đổi filterphương thức quá tải trong Zend_Filter_PregReplacelà ngây thơ và giả sử $this->_matchPatternluôn luôn là một chuỗi. Tài sản này sau đó được cung cấp như là đối số đầu tiên preg_replace. Trong thực tế, một mảng cũng là một đối số hoàn toàn hợp lệ. Thực tế này thực sự được sử dụng bởi nhiều Zend_Filterlớp lõi (như Zend_Filter_Word_SeparatorToCamelCase). Vì vậy, bất kỳ phần mở rộng / nhánh mã nào sử dụng bộ lọc này hoặc một trong các dẫn xuất của nó, với một đối số mảng _matchPattern, sẽ bắt đầu némWarning: substr() expects parameter 1 to be a string, array given .

Một ví dụ thô thiển về những gì nó có lẽ nên làm sẽ là một cái gì đó dọc theo dòng:

/**
 * Perform regexp replacement as filter
 *
 * @param  string $value
 * @return string
 */
public function filter($value)
{
    if ($this->_matchPattern == null) {
        #require_once 'Zend/Filter/Exception.php';
        throw new Zend_Filter_Exception(get_class($this) . ' does not have a valid MatchPattern set.');
    }

    $patterns = is_array($this->_matchPattern) ? $this->_matchPattern : array($this->_matchPattern);
    foreach ($patterns as $pattern) {
        if ($this->_containsEvalModifier($pattern)) {
            throw new Zend_Filter_Exception(get_class($this) . ' uses deprecated modifier "/e".');
        }
    }

    return preg_replace($this->_matchPattern, $this->_replacement, $value);
}

/**
 * Check if the modifiers contains the eval flag.
 *
 * @param  string $value
 * @return bool
 */
protected function _containsEvalModifier($pattern)
{
    $firstDelimiter = substr($pattern, 0, 1);
    $partsOfRegex = explode($firstDelimiter, $pattern);
    $modifiers = array_pop($partsOfRegex);

    return ($modifiers != str_replace('e', '', $modifiers));
}

Mặc dù tôi chưa thực hiện bất kỳ thử nghiệm kỹ lưỡng nào về việc này.

EDIT: Điều đáng chú ý là, trong khi giải pháp được đề xuất ở trên sẽ ngăn ngừa các lỗi, thì việc triển khai về mặt kỹ thuật vẫn hơi ngây thơ và dễ bị sai. Nó giả định rằng dấu phân cách regex phân tách mẫu từ các bộ sửa đổi giống như mẫu ở đầu chuỗi. Về mặt kỹ thuật, điều này không phải là trường hợp vì PHP hỗ trợ các dấu phân cách kiểu khung khác nhau. Do đó, đầu vào hợp lệ {hello}issẽ xác định các công cụ sửa đổi là hello}is(chứ không phải là công cụ sửa đổi thực tế is) và do đó sẽ đưa ra một ngoại lệ, mặc dù mẫu không thực sự bao gồm công cụ esửa đổi.


5

1.7.0.2 Vấn đề về phiên bản: Sau khi cài đặt bản vá và đi đến kiểm tra một trang (kiểm tra Magento chung), gặp lỗi này

Lỗi phân tích cú pháp: lỗi cú pháp, không mong muốn

ứng dụng / mã / lõi / Mage / Checkout / Model / Type / Onepage.php trên dòng 691

Đảo ngược các bản vá, lỗi biến mất.

Nhìn sâu hơn vào câu hỏi này, tôi đã tìm thấy bản vá đã thêm dòng sau vào tệp onepage.php.

$passwordCreatedTime = $this->_checkoutSession->getData('_session_validator_data')['session_expire_timestamp']
            - Mage::getSingleton('core/cookie')->getLifetime();
        $customer->setPasswordCreatedAt($passwordCreatedTime);

GIẢI PHÁP: Cảm ơn @FabianSchmengler

CẬP NHẬT phiên bản PHP 5.4 trở lên!


Tôi cũng đang áp dụng bản vá gốc, nó sẽ là $ passwordCreatedTime = $ this -> _ checkoutSession-> getData ('_ session_validator_data') ['session_Exire_timestamp'] - Mage :: getSingleton ('core / cookie') -> getL dòng tiếp theo (dòng mới được tạo / thêm) - Mage :: getSingleton ('core / cookie') -> getLifetime (); tạo ra nguyên nhân của vấn đề
Rama Chandran M

@RamaChandranM Đúng! Bạn nhận được lỗi PARSE tương tự? Ngoài ra bạn đang sử dụng phiên bản nào?
Biểu tượng

1
vâng tôi sẽ kiểm tra một dự án khác và cung cấp thêm chi tiết Ans :)
Rama Chandran M

2
@Icon đã có một bản vá cho khả năng tương thích PHP 5.4. Tôi đã không chạm vào bất kỳ cài đặt 1.7 nào trong một thời gian dài, nhưng tôi cũng mong nó sẽ hoạt động vào ngày 5.6, hãy dùng thử.
Fabian Schmengler

1
@icon bạn có thể bỏ qua các thông báo phản đối trong thời điểm hiện tại, điều này sẽ trở nên phù hợp khi bạn cập nhật lên PHP 7
Fabian Schmengler

2

vấn đề được biết :-

Nếu mã tùy chỉnh hoặc tiện ích mở rộng của bạn đang sử dụng Zend/Filter/PregReplace.php với công cụ sửa đổi e, giờ đây nó sẽ trả về lỗi do các sự cố RCE có thể xảy ra.

Bản vá này sau đây bảo mật.

1) Thay đổi mật khẩu xác thực phiên quản trị viên bổ sung

+++ app/code/core/Mage/Admin/Model/User.php

+            $sessionUser = $this->getSession()->getUser();
+            if ($sessionUser && $sessionUser->getId() == $this->getId()) {
+                $this->getSession()->setUserPasswordChanged(true);
+            }

và sau đó

+    /**
+     * @return Mage_Admin_Model_Session
+     */
+    protected function getSession()
+    {
+        return  Mage::getSingleton('admin/session');
+    }
+

class Mage_Admin_Model_User

+        $oldPassword = $this->getPassword();
     $this->setId(null);
     $this->load($id);
+        $isUserPasswordChanged = $this->getSession()->getUserPasswordChanged();
+        if ($this->getPassword() !== $oldPassword && !$isUserPasswordChanged) {
+            $this->setId(null);
+        } elseif ($isUserPasswordChanged) {
+            $this->getSession()->setUserPasswordChanged(false);
+        }

2) Xác thực mở rộng tệp

app/code/core/Mage/Adminhtml/Block/Catalog/Product/Composite/Fieldset/Options.php

+        if (!empty($option['file_extension'])) {
+            $option['file_extension'] = $this->escapeHtml($option['file_extension']);
+        }

app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php

-                    $value['file_extension'] = $option->getFileExtension();
+                    $value['file_extension'] = $this->escapeHtml($option->getFileExtension());

app/code/core/Mage/Catalog/Model/Product.php

+                        if (!empty($option['file_extension'])) {
+                            $fileExtension = $option['file_extension'];
+                            if (0 !== strcmp($fileExtension, Mage::helper('core')->removeTags($fileExtension))) {
+                                Mage::throwException(Mage::helper('catalog')->__('Invalid custom option(s).'));
+                            }
+                        }

3) Escape Html được thêm cho XSS

+++ app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Datetime.php

-            return $value;
+            return $this->escapeHtml($value);
     }

-        return parent::getEscapedValue($index);
+        return $this->escapeHtml(parent::getEscapedValue($index));

app/design/frontend/base/default/template/downloadable/catalog/product/links.phtml

-        <dt><label<?php if ($_isRequired) echo ' class="required"' ?>><?php if ($_isRequired) echo '<em>*</em>' ?><?php echo $this->getLinksTitle() ?></label></dt>
+        <dt><label<?php if ($_isRequired) echo ' class="required"' ?>><?php if ($_isRequired) echo '<em>*</em>' ?><?php echo $this->escapeHtml($this->getLinksTitle()); ?></label></dt>

app/design/frontend/base/default/template/downloadable/checkout/cart/item/default.phtml

-            <dt><?php echo $this->getLinksTitle() ?></dt>
+            <dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

app/design/frontend/base/default/template/downloadable/checkout/onepage/review/item.phtml

-            <dt><?php echo $this->getLinksTitle() ?></dt>
+            <dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

app/design/frontend/base/default/template/downloadable/sales/order/items/renderer/downloadable.phtml

-            <dt><?php echo $this->getLinksTitle() ?></dt>
+            <dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

app/design/frontend/default/iphone/template/downloadable/checkout/onepage/review/item.phtml

-                <dt><?php echo $this->getLinksTitle() ?></dt>
+                <dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

app/design/frontend/rwd/default/template/downloadable/checkout/cart/item/default.phtml

-            <dt><?php echo $this->getLinksTitle() ?></dt>
+            <dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

app/design/frontend/rwd/default/template/downloadable/checkout/onepage/review/item.phtml

-            <dt><?php echo $this->getLinksTitle() ?></dt>
+            <dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

app/design/frontend/rwd/default/template/downloadable/sales/order/items/renderer/downloadable.phtml

-            <dt><?php echo $this->getLinksTitle() ?></dt>
+            <dt><?php echo $this->escapeHtml($this->getLinksTitle()); ?></dt>

4) Biểu thức XPath để kiểm tra cập nhật bố cục

app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php

+    /**
+     * XPath expression for checking layout update
+     *
+     * @var array
+     */
+    protected $_disallowedXPathExpressions = array(
+        '*//template',
+        '*//@template',
+        '//*[@method=\'setTemplate\']',
+        '//*[@method=\'setDataUsingMethod\']//*[text() = \'template\']/../*'
+    );
+

Mage_Adminhtml_Model_LayoutUpdate_Validator

-        if ($templatePaths = $value->xpath('*//template | *//@template | //*[@method=\'setTemplate\']/*')) {
+        if ($templatePaths = $value->xpath($this->_getXpathValidationExpression())) {

Mage_Adminhtml_Model_LayoutUpdate_Validator

+    /**
+     * Returns xPath for validate incorrect path to template
+     *
+     * @return string xPath for validate incorrect path to template
+     */
+    protected function _getXpathValidationExpression() {
+        return implode(" | ", $this->_disallowedXPathExpressions);
+    }
+



+    /**
+     * Returns xPath for validate incorrect path to template
+     *
+     * @return string xPath for validate incorrect path to template
+     */
+    protected function _getXpathValidationExpression() {
+        return implode(" | ", $this->_disallowedXPathExpressions);
+    }
+

app/code/core/Mage/Catalog/Model/Resource/Category/Tree.php

+            if (!preg_match("#^[0-9\/]+$#", $item['path'])) {
+                $item['path'] = '';
+            }

5) Xác thực SQL tiêm khi lưu một danh mục

app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController

+            if (isset($data['general']['path'])) {
+                unset($data['general']['path']);
+            }

6) Xác nhận sản phẩm app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php

+                $product->validate();

7) bắt chước app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php

+            $this->getResponse()->setHeader('Content-type', $image->getMimeTypeWithOutFileType());

app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php

+        $this->getResponse()->setHeader('Content-type', $image->getMimeTypeWithOutFileType());

lib/Varien/Image/Adapter/Gd2.php

-        header("Content-type: ".$this->getMimeType());
+        header("Content-type: ".$this->getMimeTypeWithOutFileType());


+
+    /**
+     * Gives real mime-type with not considering file type field
+     *
+     * @return string
+     */
+    public function getMimeTypeWithOutFileType()
+    {
+        return $this->_fileMimeType;
+    }

8) Tạo Passsword khách hàng app/code/core/Mage/Adminhtml/controllers/CustomerController.php

+                    $customer->setPasswordCreatedAt(time());

app/code/core/Mage/Checkout/Model/Api/Resource/Customer.php

+        $customer->setPasswordCreatedAt(time());

app/code/core/Mage/Checkout/Model/Type/Onepage.php

+        $passwordCreatedTime = $this->_checkoutSession->getData('_session_validator_data')['session_expire_timestamp']
+            - Mage::getSingleton('core/cookie')->getLifetime();
+        $customer->setPasswordCreatedAt($passwordCreatedTime);

app/code/core/Mage/Core/Model/Session/Abstract/Varien.php

+    const VALIDATOR_PASSWORD_CREATE_TIMESTAMP   = 'password_create_timestamp';


+    /**
+     * Use password creation timestamp in validator key
+     *
+     * @return bool
+     */
+    public function useValidateSessionPasswordTimestamp()
+    {
+        return true;
+    }


+        if ($this->useValidateSessionPasswordTimestamp()
+            && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
+            && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
+            && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
+            > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
+        ) {
+            return false;
+        }

app/code/core/Mage/Customer/Helper/Data.php

+    /**
+     * Get customer password creation timestamp or customer account creation timestamp
+     *
+     * @param $customerId
+     * @return int
+     */
+    public function getPasswordTimestamp($customerId)
+    {
+        /** @var $customer Mage_Customer_Model_Customer */
+        $customer = Mage::getModel('customer/customer')
+            ->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
+            ->load((int)$customerId);
+        $passwordCreatedAt = $customer->getPasswordCreatedAt();
+
+        return is_null($passwordCreatedAt) ? $customer->getCreatedAtTimestamp() : $passwordCreatedAt;
+    }
+

app/code/core/Mage/Customer/Model/Resource/Customer.php

-        $customer->setPassword($newPassword);
+        $customer->setPassword($newPassword)->setPasswordCreatedAt(time());
     $this->saveAttribute($customer, 'password_hash');
+        $this->saveAttribute($customer, 'password_created_at');

app/code/core/Mage/Customer/controllers/AccountController.php

+                $customer->setPasswordCreatedAt(time());

Mage_Customer_AccountController

+            $customer->setPasswordCreatedAt(time());
         $customer->save();

``

+                $customer->setPasswordCreatedAt(time());

app/code/core/Mage/Log/Model/Visitor.php

-        if (!$this->getCustomerId() && $customer = $observer->getEvent()->getCustomer()) {
+        if ($customer = $observer->getEvent()->getCustomer()) {

9) Thay đổi của UPS

app/code/core/Mage/Usa/Helper/Data.php

+
+    /**
+     * Validate ups type value
+     *
+     * @param $valueForCheck string ups type value for check
+     *
+     * @return bool
+     */
+    public function validateUpsType($valueForCheck) {
+        $result = false;
+        $sourceModel = Mage::getSingleton('usa/shipping_carrier_ups_source_type');
+        foreach ($sourceModel->toOptionArray() as $allowedValue) {
+            if (isset($allowedValue['value']) && $allowedValue['value'] == $valueForCheck) {
+                $result = true;
+                break;
+            }
+        }
+        return $result;
+    }

Các tệp đã thêm cho UPS

`app/code/core/Mage/Usa/Model/Shipping/Carrier/Abstract/Backend/Abstract.php` 
`app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/Freemethod.php`
`app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/OriginShipment.php`
`app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups/Backend/Type.php`

Đã thêm Cài đặt cho chức năng mới này

app/code/core/Mage/Usa/etc/system.xml

+                            <backend_model>usa/shipping_carrier_ups_backend_freemethod</backend_model>

Đường 843

+                            <backend_model>usa/shipping_carrier_ups_backend_originShipment</backend_model>

886

+                            <backend_model>usa/shipping_carrier_ups_backend_type</backend_model>

app/design/adminhtml/default/default/template/system/shipping/ups.phtml

+if (!in_array($storedOriginShipment, array_keys($orShipArr))) {
+    $storedOriginShipment = '';
+}
+if ($storedFreeShipment != '' && !in_array($storedFreeShipment, array_keys($defShipArr))) {
+    $storedFreeShipment = '';
+}
+if (!Mage::helper('usa')->validateUpsType($storedUpsType)) {
+    $storedUpsType = '';
+}
 ?>

10) Đã thêm lớp Zend

`app/code/core/Zend/Filter/PregReplace.php`
`app/code/core/Zend/Validate/EmailAddress.php`

1> 1) Xác nhận sản phẩm gói

app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml

+    <?php $_selection->setSku($this->escapeHtml($_selection->getSku())); ?>

12) Phiên quản trị trong thử bắt trong cron.php

-Mage::app('admin')->setUseSessionInUrl(false);
+try {
+    Mage::app('admin')->setUseSessionInUrl(false);
+} catch (Exception $e) {
+    Mage::printException($e);
+    exit;
+}

2

Có vẻ như một phần của bản vá là htmlEscaping tất cả "getLinksTitle ()". Nhưng họ đã quên các tệp sau (điều này dựa trên 1.8.1).

app/design/frontend/base/default/template/downloadable/checkout/multishipping/item/downloadable.phtml

app/design/frontend/base/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml

app/design/frontend/base/default/template/downloadable/email/order/items/invoice/downloadable.phtml

app/design/frontend/base/default/template/downloadable/email/order/items/order/downloadable.phtml

app/design/frontend/base/default/template/downloadable/sales/order/creditmemo/items/renderer/downloadable.phtml

app/design/frontend/base/default/template/downloadable/sales/order/invoice/items/renderer/downloadable.phtml

app/design/frontend/default/iphone/template/downloadable/sales/order/creditmemo/items/renderer/downloadable.phtml

app/design/frontend/default/iphone/template/downloadable/sales/order/invoice/items/renderer/downloadable.phtml

2

Bản vá không hoạt động trên vanilla Magento CE 1.8.0.0

Cập nhật: Đã thêm giải pháp bên dưới.

Vấn đề:

file app/design/frontend/base/default/template/downloadable/sales/order/items/renderer/downloadable.phtml
Hunk #1 FAILED at 54.

Áp dụng các bản vá trước:

  • APPSEC-212
  • CUNG CẤP-2619
  • SUPEE-2725
  • CUNG CẤP-3941
  • CUNG CẤP-5344
  • CUNG CẤP-5994
  • SUPEE-6237
  • CUNG CẤP-6305
  • CUNG CẤP-6482
  • CUNG CẤP-6788
  • SUPEE-7405
  • SUPEE-7405v.1.1
  • CUNG CẤP-7616
  • CUNG CẤP-8167
  • CUNG CẤP-8788v2
  • CUNG CẤP-8967
  • CUNG CẤP-9652
  • CUNG CẤP-9767v2
  • CUNG CẤP-10336
  • SUPEE-10266
  • SUPEE-10415
  • SUPEE-10570v2

Giải pháp

Đã sửa bằng cách chỉnh sửa tệp vá. Thay thế bản vá cho bản vá downloadable.phtmltừ bản vá v1.7.0.2trong tệp vá gốc là các dòng 1854-1862.

Điều này chủ yếu là do thụt vào trong tệp. Khi thay đổi downloadable.phtmltrong V1.7.0.2có nhiều thụt lề.

Giải pháp 2

Tôi đã gặp một vấn đề tương tự, nhưng tôi đã có thể khắc phục bằng cách lưu lại tệp gốc trong trình chỉnh sửa buộc dòng kết thúc phải là kiểu Unix, chứ không phải kiểu CRLF của Windows hoặc Mac CR


1

Liên quan đến Matt Antley, có lẽ họ không bao gồm SUPEE-10570v2 vì điều này

Magento gần đây đã được thông báo về một vấn đề với cả bản vá SUPEE-10570> và phiên bản Magento 1.9.3.8/1.14.3.8 có thể dẫn đến việc khách hàng không thể hoàn thành kiểm tra khi cố gắng đăng ký khi thanh toán. Magento hiện đang cung cấp một bản vá cập nhật (SUPEE-10570v2) mà> không còn gây ra vấn đề này nữa. Tuy nhiên, lưu ý rằng bản vá mới này không còn> bảo vệ chống lại hai vấn đề bảo mật liên quan đến xử lý phiên có rủi ro thấp mà bản vá SUPEE-10570 được bảo vệ chống lại. https://magento.com/security/patches/supee-10570

Theo như tôi biết thì lỗi thanh toán không phổ biến lắm và vì vậy họ quyết định ở lại với SUPEE-10570 để bảo vệ chống lại hai vấn đề bảo mật rủi ro thấp?!


+1 Đây rất có thể là lý do cho điều đó, nhưng đáng chú ý là nếu người dùng đang nâng cấp và phải áp dụng SUPEE-10570v2thì họ sẽ phải áp dụng lại.
Matt Antley

Như Peter O'Callaghan đã nêu, những thay đổi từ 10570v2 được hoàn nguyên vào năm 10752, do đó không cần phải bao gồm trước đây. Vì không có 10570v2 cho 1.9.3.9, bạn không cần phải áp dụng bất cứ điều gì. Toàn bộ lý luận là yếu: tại sao Magento nên giữ chi nhánh 1.9.3.9 của mình trên một cơ sở khác với tất cả các cơ sở khác? Họ thậm chí còn nói rằng họ sẽ dựa trên mọi bản phát hành và bản vá trong tương lai trên 10570v2.
pong

Cảm ơn các ý kiến ​​Peter và pong. Đã xóa câu trả lời của tôi vì nó gây hiểu lầm như đã nêu của cả hai bạn. Đó không phải là ý định của tôi, chỉ là điều tôi không nghĩ đến khi viết nó ra và là điều tôi nhận thấy ngắn gọn khi nhìn vào SUPEE-10752và nhảy súng một chút. Một lần nữa, cảm ơn các ý kiến.
Matt Antley

1

Bản vá không hoạt động trên vanilla Magento CE 1.6.0.0

Cập nhật: Đã thêm giải pháp bên dưới.

Các vấn đề:

file app/code/core/Mage/Admin/Model/User.php
Hunk #1 FAILED at 127.
...
file app/code/core/Mage/Customer/controllers/AccountController.php
Hunk #2 FAILED at 812.

Áp dụng các bản vá trước:

  • APPSEC-212
  • SUPEE-2631
  • SUPEE-2725
  • CUNG CẤP-5344
  • CUNG CẤP-5994
  • SUPEE-6237
  • CUNG CẤP-6305
  • CUNG CẤP-6482
  • CUNG CẤP-6788
  • SUPEE-7405
  • SUPEE-7405v.1.1
  • CUNG CẤP-8167
  • CUNG CẤP-8788v2
  • CUNG CẤP-8967
  • CUNG CẤP-9652
  • CUNG CẤP-9767v2
  • SUPEE-10266
  • SUPEE-10415
  • SUPEE-10570v2
  • CUNG CẤP-10752

Đã giải quyết

Tôi đã khắc phục vấn đề này bằng cách thay đổi tệp vá. Tôi đã thay thế các hunk đã đưa ra các vấn đề bằng những cái theo từ bản vá cho v1.5.1.0. Trong tệp vá gốc, đây là các dòng 167-177 và 663-670.


1

Trong EE v1.14.2.4 sau khi áp dụng SUPEE-10752, tôi cũng đã phải áp dụng bản vá sau để khắc phục sự cố khi thanh toán chuyển hướng đến trang chủ thay vì trang thành công:

Tệp: không hợp lệ_session_fix-2018-03-14-05-10-19.patch

diff --git a/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php b/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
index 59b3ea8..35155f1 100644
--- a/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
+++ b/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
@@ -485,7 +485,7 @@ class Mage_Core_Model_Session_Abstract_Varien extends Varien_Object
             && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
             && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
             && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
-            > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
+            > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP]
         ) {
             return false;
         }

Bản sửa lỗi ở trên được tìm thấy trong https://magento.com/tech-resource/dải xuống dưới SUPEE-10570 > không hợp lệ_session_fix.patch (0 MB)


Nó cũng làm tương tự với CE 1.9.3.6 khi php <5.5, Cảm ơn đã sửa lỗi
GunJan Mehta

1

Tôi đã gặp một vấn đề sau bản vá này. Tôi không thể đặt "Phương thức miễn phí" cho "Loại UPS" "United Parcel Service XML". Magento đưa ra lỗi khi bất kỳ phương thức nào được chọn trong trình đơn thả xuống "Phương pháp miễn phí". Lỗi: " Trường" Ups Phương thức miễn phí "có giá trị sai. "

Có ai đã phải đối mặt với cùng một vấn đề và có giải pháp?

Cảm ơn trước!


0

Trên 1.6, bản vá up.phtml bị hỏng. Đó là tham chiếu $ archiveOriginShipment, $ archiveFreeShipment có lỗi đánh máy là 1.6 ($ stroredOriginShipment và $ stroredFreeShipment). Hơn nữa, nó tham chiếu $ archiveUpsType hoàn toàn không tồn tại trong 1.6.


0

Chúng tôi đã gặp sự cố trên 1.9.1.0 và 1.9.2.4 (chưa được thử nghiệm trên những người khác). Nó không xuất hiện trên tất cả các dự án của chúng tôi, nhưng nó đã lặp lại trên một vài trong số chúng. Chúng tôi nghĩ rằng nó có thể ảnh hưởng đến các dự án đã cài đặt SUPEE-10570v1 tại một số điểm.

Sau khi áp dụng bản vá, nếu người dùng đăng nhập, họ sẽ thấy trang tài khoản của họ hoàn toàn ổn. Tuy nhiên, nếu họ cố gắng quay lại bất kỳ trang nào khác trên trang web, trang đó sẽ ngừng phản hồi và họ sẽ thấy một màn hình trống hoặc Cổng xấu 502. Điều này là do PHP đi vào một vòng lặp vô hạn và bị phân tách hoặc bị dừng bởi các cài đặt .ini của nó.

Tôi đã quản lý để khai thác mà vấn đề là một đệ quy vô hạn trên dòng tải các $customertrong \app\code\core\Mage\Customer\Helper\Data.php, getPasswordTimestamp().

$customer = Mage::getModel('customer/customer')
        ->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
        ->load((int)$customerId);

Khi nhìn vào dấu vết ngăn xếp của đệ quy vô hạn, nó cứ lặp đi lặp lại nhiều lần. Bằng cách nào đó, có vẻ như ->load()kết thúc bằng cách gọi getPasswordTimestamp()phương thức.

Cách giải quyết được đưa ra trong /magento//a/235984/67252 hoạt động tốt, nhưng tôi muốn biết điều gì đang xảy ra.


0

Sau khi áp dụng bản vá SUPEE 10752, Đăng ký và thanh toán sẽ đưa trang thành công lên trang chủ. Bất kỳ đề xuất?


-1

Chúng tôi đã thấy một trang trống tại / thanh toán / * sau khi áp dụng SUPEE-10752 và biên dịch

phiên bản: 1.9.1.0

Điều kiện kích hoạt: áp dụng SUPEE-10752 + kích hoạt trình biên dịch + đăng nhập với tư cách là khách hàng, sau đó truy cập / thanh toán / *

Chỉ cần làm rõ: Với trình biên dịch đã hủy kích hoạt, mọi thứ đều ổn, với trình biên dịch được kích hoạt, chúng tôi chỉ có thể thấy một trang giỏ hàng trống khi đăng nhập mà không có bất kỳ mục nhật ký nào (ngay cả sau khi kích hoạt tất cả các bản ghi có thể và chế độ nhà phát triển).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.