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


37

Bản vá Magento 1 mới đã được phát hành, SUPEE-10415 .

Bản vá này cung cấp bảo vệ chống lại một số loại vấn đề liên quan đến bảo mật

Trang thông tin: https://magento.com/security/patches/supee-10415
Trang tải xuống: https://magento.com/tech-resource/doad

Các vấn đề có thể để xem ra là gì?

Ngoài ra, vui lòng chia sẻ tất cả các lỗi và sự cố mà bạn đã tìm thấy sau khi cài đặt bản vá.


  • Vấn đề với việc áp dụng SUPEE-10415 trên vanilla 1.9.1.1 , các chương trình không thể được áp dụng do thông báo lỗi hunk tại Image.php . EDIT: Kể từ ngày 7 tháng 12 năm 2017, bản sửa lỗi được cung cấp trong SUPEE-10497

  • Phải cài đặt 8788 Phiên bản 2 , nếu không sẽ thấy lỗi "Kiểu dữ liệu không được hỗ trợ". Thêm thông tin.

  • Lỗi "404: Không tìm thấy trang" từ lỗi / thư mục sau khi nâng cấp lên SUPEE-10415. Sự cố này chỉ xảy ra trong cài đặt Magento chạy các tiện ích mở rộng của bên thứ ba nhất định.
    Giải pháp thay thế: Xác nhận rằng không có cảnh báo PHP nào được tạo bởi bất kỳ tiện ích mở rộng hoặc tùy chỉnh nào.

5
Đã triển khai không có vấn đề gì trên Magento 1.9.2.4CE tại đây - hầu hết các thay đổi dường như là vệ sinh các biến trong quản trị viên, cụ thể là lưu tệp nhật ký. Dường như có một vài thay đổi đối với api xà phòng cũng về mặt vệ sinh. Các đánh giá cũng được vệ sinh trong khu vực quản trị viên, vì vậy có thể có khả năng khai thác nơi mã độc có thể được đăng vào đánh giá tại mo (đầu cơ)
Ricky Odin Matthews

2
Đã triển khai lên Magento 1.9.3.0 CE không có vấn đề gì ở đây. Bản vá trước 10266 là bắt buộc nếu bạn chưa áp dụng bản vá đó.
danmentzer

1
Vào ngày 1.9.1.0 - trong "Quy tắc giá giỏ hàng", bản vá gây ra lỗi - lỗi cứng về quy tắc xem - mục nhập nhật ký -a: 5: {i: 0; s: 23: "Kiểu dữ liệu không được hỗ trợ N"; i: 1; s: 1464: "# 0 /opt/bitnami/apps/magento/htdocs/lib/Unserialize/Reader/Arr.php(102): Không thể đọc được sửa lỗi sửa lỗi để nó là một cái gì đó trong SUPEE-10415
Laith

1
Tôi không có tiếng để đăng câu trả lời, nhưng bạn không thể nâng cấp lên Magento 1.9.3.7 và sau đó sử dụng Git để hợp nhất với bản vá này: hằng số MAXIMUM_PASSWORD_LENGTH được thêm hai lần nếu bạn sử dụng hành vi Git mặc định (không biết nếu có cài đặt đó là cách giải quyết cho việc này).
toon81

1
Đối với các vấn đề 1.9.1.1: Vui lòng sử dụng SUPEE-10497 thay vào đó, nó mới được phát hành gần đây để giải quyết vấn đề này vào ngày 1.9.1.1. Vui lòng đọc ghi chú phát hành vì bản vá này yêu cầu xóa SUPEE-10266 trước khi cài đặt.
Piotr Kaminski

Câu trả lời:


26

Các tập tin dưới đây được cập nhật / bổ sung sau khi áp dụng bản vá SUPEE - 10415.

app/Mage.php
app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
app/code/core/Mage/Adminhtml/Block/Review/Add.php
app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
app/code/core/Mage/Adminhtml/Controller/Action.php
app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
app/code/core/Mage/Api/Helper/Data.php
app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Api/Model/Wsdl/Config.php
app/code/core/Mage/Api/Model/Wsdl/Config/Base.php
app/code/core/Mage/Core/Helper/String.php
app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/config.xml
app/code/core/Mage/Core/etc/system.xml
app/code/core/Mage/Customer/Model/Customer.php
app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
app/code/core/Mage/Log/Helper/Data.php
app/code/core/Mage/Rule/Model/Abstract.php
app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
app/code/core/Zend/Form/Decorator/Form.php
app/design/adminhtml/default/default/template/backup/dialogs.phtml
app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
app/locale/en_US/Mage_Adminhtml.csv
app/locale/en_US/Mage_Customer.csv
js/mage/adminhtml/backup.js
lib/Varien/Filter/FormElementName.php

Một số điểm quan trọng:

1) Phần mở rộng tập tin được phép: log, txt, html, csv. kiểm tra các tập tin dưới đây

app/Mage.php
app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
app/code/core/Mage/Core/etc/system.xml
app/code/core/Mage/Log/Helper/Data.php

2) Độ dài mật khẩu tối đa được đặt là 256 ký tự và kiểm tra xác thực trong app/code/core/Mage/Customer/Model/Customer.phptệp

@@ -74,6 +74,11 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
     const MINIMUM_PASSWORD_LENGTH = 6;

     /**
+     * Maximum Password Length
+     */
+    const MAXIMUM_PASSWORD_LENGTH = 256;
+
+    /**
      * Model event prefix
      *
      * @var string
@@ -876,6 +881,10 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
             $errors[] = Mage::helper('customer')
                 ->__('The minimum password length is %s', self::MINIMUM_PASSWORD_LENGTH);
         }
+        if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
+            $errors[] = Mage::helper('customer')
+                ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
+        }
         $confirmation = $this->getPasswordConfirmation();
         if ($password != $confirmation) {
             $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');
@@ -902,7 +911,7 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
     }

     /**
-     * Validate customer attribute values on password reset
+     * Validate customer password on reset
      * @return bool
      */
     public function validateResetPassword()
@@ -916,6 +925,10 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
             $errors[] = Mage::helper('customer')
                 ->__('The minimum password length is %s', self::MINIMUM_PASSWORD_LENGTH);
         }
+        if (!Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
+            $errors[] = Mage::helper('customer')
+                ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
+        }
         $confirmation = $this->getPasswordConfirmation();
         if ($password != $confirmation) {
             $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');

Đối với Phiên bản EE Đã thêm bốn tệp

app/code/community/OnTap/Merchandiser/Block/Adminhtml/Catalog/Product/List.php
app/design/adminhtml/default/default/template/merchandiser/smartmerch/tab.phtml
app/design/frontend/rwd/enterprise/template/giftcardaccount/onepage/payment/scripts.phtml
app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Một số điểm không quan trọng trong EE

Đã thêm một điều kiện trong các tập tin dưới đây

app/design/frontend/rwd/enterprise/template/giftcardaccount/onepage/payment/scripts.phtml 
  app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Vui lòng cập nhật các điều kiện dưới đây trong các tập tin Chủ đề của bạn.

if (elements[i].name == 'form_key') 
{
                continue;
 }

Để biết thêm thông tin:

https://magento.com/security/patches/supee-10415 http://devdocs.magento.com/guides/m1x/ce19-ee114/ee1.14_release-notes.html#ee114-11436 http: // devdocs. magento.com/guides/m1x/ce19-ee114/ce1.9_release-notes.html#ce19-1936


Sau khi áp dụng SUPEE-10415, cả front-end và back-end đều gặp lỗi 404, làm thế nào tôi có thể giải quyết vấn đề này? magento.stackexchange.com/q/215620/57334
zus

Bạn có thể tạo một vé riêng và giải thích với nhật ký lỗi và Thêm nhận xét tôi sẽ giúp bạn. vấn đề này do .htaccess hoặc ghi đè mô-đun cục bộ.
Rama Chandran M


20

CUNG CẤP-10415 ...

  1. Giải quyết một số vấn đề XSS của bảng quản trị trong các lĩnh vực sau:

    • Báo cáo đánh giá sản phẩm
    • Báo cáo thẻ sản phẩm
    • Đánh giá sản phẩm thêm / chỉnh sửa giao diện
    • Thỏa thuận thanh toán
    • tab biên tập nội dung xmlconnect
    • Quy tắc nối tiếp
  2. Hạn chế các phần mở rộng tệp có thể được sử dụng cho các tệp nhật ký hệ thống và ngoại lệ. Cho phép mở rộng tập tin: .log, .txt, .html,.csv

  3. Đặt giới hạn trên 256 ký tự cho mật khẩu tài khoản của khách hàng. Sự thay đổi đặc biệt này là vô lý; không chắc chắn nơi họ có ý tưởng sáng sủa này.

Không có thay đổi nào trong số những thay đổi này dường như bị phá vỡ ồ ạt hoặc thay đổi không tương thích ngược, có lẽ ngoại trừ hạn chế độ dài mật khẩu của khách hàng.


9
Độ dài mật khẩu 256 thực sự là một lỗi trong Magento chưa được vá, bởi vì trường mật khẩu cơ sở dữ liệu nằm trong customer_entity_varchar.value là maxlength = 255. Không chắc chắn điều gì xảy ra mà không có bản vá nếu bạn cố gắng đặt lâu hơn 255, có thể gây ra sự cố.
Ricky Odin Matthews

12
Bạn hoàn toàn đúng; customer_entity_varchar.value có kích thước cột giới hạn. Tuy nhiên, đó không phải là lỗi vì mật khẩu không được lưu trong cột đó. Các muối và băm mật khẩu được lưu trữ ở đó. Giá trị này sẽ luôn có độ dài cố định, bất kể kích thước của mật khẩu ban đầu. Trước bản vá này, hoàn toàn không có vấn đề gì khi nhập mật khẩu dài hơn 255 ký tự.
t-richards

3
Tôi giả sử thay đổi độ dài mật khẩu có liên quan đến APPSEC-1330. magento.com/security/patches/supee-10415
quasiobject

7
Có lẽ đây là suy nghĩ của họ, Rob: stackoverflow.com/a/98857/8199523
RickyMage123

1
@ t-richards điểm tuyệt vời, bạn ở ngay đó. Tại sao bạn nghĩ họ sẽ làm điều đó, tôi nghĩ có thể băm mật khẩu dài có thể gây ra vấn đề DoS về việc sử dụng CPU, chắc chắn mật khẩu dài hơn sẽ mất nhiều CPU / Bộ nhớ hơn trong PHP để băm?
Ricky Odin Matthews

12

SUPEE 10415 Yêu cầu bản vá 8788 v2

Tôi đã gặp lỗi tương tự như bài viết trước nhưng dường như nó đã bị xóa.

a:5:{i:0;s:23:"Unsupported data type N";i:1;s:2942:"#0 /chroot/home/mywebroot/html/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue->  read('N', ';')
#1 /chroot/home/mywebroot/html/lib/Unserialize/Parser.php(53): Unserialize_Reader_Arr->read('N', ';')
#2 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Helper/UnserializeArray.php(44): Unserialize_Parser->unserialize('a:6:{s:4:"type"...')
#3 /chroot/home/mywebroot/html/app/code/core/Mage/Rule/Model/Abstract.php(179): Mage_Core_Helper_UnserializeArray->unserialize('a:6:{s:4:"type"...')
#4 /chroot/home/mywebroot/html/app/code/core/Mage/Rule/Model/Abstract.php(353): Mage_Rule_Model_Abstract->getConditions()
#5 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Validator.php(216): Mage_Rule_Model_Abstract->validate(Object(   Mage_Sales_Model_Quote_Address))
#6 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Validator.php(242): Mage_SalesRule_Model_Validator->_canProcessRule(Object(  Mage_SalesRule_Model_Rule), Object(Mage_Sales_Model_Quote_Address))
#7 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Quote/Freeshipping.php(74): Mage_SalesRule_Model_Validator->processFreeShipping(Object(  Mage_Sales_Model_Quote_Item))
#8 /chroot/home/mywebroot/html/app/code/core/Mage/Sales/Model/Quote/Address.php(1013): Mage_SalesRule_Model_Quote_Freeshipping->collect(Object(    Mage_Sales_Model_Quote_Address))
#9 /chroot/home/mywebroot/html/app/code/core/Mage/Sales/Model/Quote.php(1331): Mage_Sales_Model_Quote_Address->collectTotals()
#10 /chroot/home/mywebroot/html/app/code/core/Mage/Checkout/Model/Cart.php(458): Mage_Sales_Model_Quote->collectTotals()
#11 /chroot/home/mywebroot/html/app/code/core/Mage/Checkout/controllers/CartController.php(127): Mage_Checkout_Model_Cart->save()
#12 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Checkout_CartController->indexAction()
#13 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#14 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(   Mage_Core_Controller_Request_Http))
#15 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#16 /chroot/home/mywebroot/html/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#17 /chroot/home/mywebroot/html/index.php(96): Mage::run('', 'store')
#18 {main}";s:3:"url";s:15:"/checkout/cart/";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}

Tôi đã gặp phải lỗi trên khi tôi cài đặt bản vá mới trên M 1.8.00 CE Nguyên nhân cụ thể có vẻ là do bản vá v2 của 8788, chúng tôi đã thực hiện sửa lỗi thủ công cho phần lớn các vấn đề từ bản vá đó nhưng chúng tôi đã bỏ lỡ các phần không xác định.

Thay vì hoàn nguyên bản vá, tôi đã tự sửa đổi và bây giờ trang web đang hoạt động bình thường.

Dưới đây bạn sẽ tìm thấy mã cho bản vá 8788

diff --git lib/Unserialize/Parser.php lib/Unserialize/Parser.php
index 423902a..2c01684 100644
--- lib/Unserialize/Parser.php
+++ lib/Unserialize/Parser.php
@@ -34,6 +34,7 @@ class Unserialize_Parser
     const TYPE_DOUBLE = 'd';
     const TYPE_ARRAY = 'a';
     const TYPE_BOOL = 'b';
+    const TYPE_NULL = 'N';

     const SYMBOL_QUOTE = '"';
     const SYMBOL_SEMICOLON = ';';

diff --git lib/Unserialize/Reader/Arr.php lib/Unserialize/Reader/Arr.php
index caa979e..cd37804 100644
--- lib/Unserialize/Reader/Arr.php
+++ lib/Unserialize/Reader/Arr.php
@@ -101,7 +101,10 @@ class Unserialize_Reader_Arr
         if ($this->_status == self::READING_VALUE) {
             $value = $this->_reader->read($char, $prevChar);
             if (!is_null($value)) {
-                $this->_result[$this->_reader->key] = $value;
+                $this->_result[$this->_reader->key] =
+                    ($value == Unserialize_Reader_Null::NULL_VALUE && $prevChar == Unserialize_Parser::TYPE_NULL)
+                        ? null
+                        : $value;
                 if (count($this->_result) < $this->_length) {
                     $this->_reader = new Unserialize_Reader_ArrKey();
                     $this->_status = self::READING_KEY;

diff --git lib/Unserialize/Reader/ArrValue.php lib/Unserialize/Reader/ArrValue.php
index d2a4937..c6c0221 100644
--- lib/Unserialize/Reader/ArrValue.php
+++ lib/Unserialize/Reader/ArrValue.php
@@ -84,6 +84,10 @@ class Unserialize_Reader_ArrValue
                     $this->_reader = new Unserialize_Reader_Dbl();
                     $this->_status = self::READING_VALUE;
                     break;
+                case Unserialize_Parser::TYPE_NULL:
+                    $this->_reader = new Unserialize_Reader_Null();
+                    $this->_status = self::READING_VALUE;
+                    break;
                 default:
                     throw new Exception('Unsupported data type ' . $char);
             }

diff --git lib/Unserialize/Reader/Null.php lib/Unserialize/Reader/Null.php
new file mode 100644
index 0000000..93c7e0b
--- /dev/null
+++ lib/Unserialize/Reader/Null.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magento.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magento.com for more information.
+ *
+ * @category    Unserialize
+ * @package     Unserialize_Reader_Null
+ * @copyright  Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Class Unserialize_Reader_Null
+ */
+class Unserialize_Reader_Null
+{
+    /**
+     * @var int
+     */
+    protected $_status;
+
+    /**
+     * @var string
+     */
+    protected $_value;
+
+    const NULL_VALUE = 'null';
+
+    const READING_VALUE = 1;
+
+    /**
+     * @param string $char
+     * @param string $prevChar
+     * @return string|null
+     */
+    public function read($char, $prevChar)
+    {
+        if ($prevChar == Unserialize_Parser::SYMBOL_SEMICOLON) {
+            $this->_value = self::NULL_VALUE;
+            $this->_status = self::READING_VALUE;
+            return null;
+        }
+
+        if ($this->_status == self::READING_VALUE && $char == Unserialize_Parser::SYMBOL_SEMICOLON) {
+            return $this->_value;
+        }
+        return null;
+    }
+}

Bạn cũng có thể đọc thêm về lỗi từ bài đăng này GIẢI QUYẾT: lớp Unserialize_Parser mới ném ngoại lệ vào các giá trị NULL


aha điểm tốt, 8788 V2 là cần thiết để ngăn chặn vấn đề!
Biểu tượng

Bạn có thể vui lòng cho biết, trên trang nào của trang web bạn đã thấy lỗi "Loại dữ liệu không được hỗ trợ" không? Đang cố gắng nhân rộng.
Biểu tượng

Tôi đã có thể kích hoạt nó trên trang danh mục và trang sản phẩm và giỏ hàng trong khi một sản phẩm nằm trong giỏ hàng.
danmentzer

@danmentzer làm thế nào tôi có thể giải quyết lỗi, hoàn nguyên bản vá 9767 v1 :: error: justpaste.it/1e9pn
zus

@zus Tôi vừa thấy bài đăng của bạn, bạn đã nhận ra điều này từ vẻ bề ngoài của dán của bạn Tôi sẽ mạo hiểm đoán ba lý do có thể khác nhau cho lỗi của bạn. 1. Bạn có phiên bản vá sai (Đây là điều ít có khả năng nhất) 2. Bản vá của bạn đã không được áp dụng. 3. Có thể bạn đã tự sửa một số trong số đó và bản vá không giống như cách bạn đã làm. Xin lỗi nếu điều này không hữu ích
danmentzer

11

Chúng tôi đã gặp sự cố với bản vá này khi mọi trang trên trang bắt đầu hiển thị lỗi "404: Không tìm thấy trang" từ errors/thư mục. Sau khi đào một chút, hóa ra nó được gây ra bởi một Cảnh báo PHP được đưa ra Mage_Core_Model_App::init, sau đó gây ra một Mage_Core_Model_Store_Exceptiontrong các dòng sau từ bản vá:

diff --git app/Mage.php app/Mage.php
index 566027d..165928d 100644
--- app/Mage.php
+++ app/Mage.php
@@ -805,7 +805,12 @@ final class Mage
         static $loggers = array();

         $level  = is_null($level) ? Zend_Log::DEBUG : $level;
-        $file = empty($file) ? 'system.log' : $file;
+        $file = empty($file) ? 'system.log' : basename($file);
+
+        // Validate file extension before save. Allowed file extensions: log, txt, html, csv
+        if (!self::helper('log')->isLogFileExtensionValid($file)) {
+            return;
+        }

         try {
             if (!isset($loggers[$file])) {
  1. Cảnh báo PHP xảy ra trước khi các cửa hàng được khởi tạo
  2. Cảnh báo được chọn bởi mageCoreErrorHandler(), cuộc gọi này Mage::log()sẽ ghi thông điệp vào tệp nhật ký.
  3. Mage::log() các cuộc gọi Mage::helper('log')
  4. Mage_Log_Helper_Data::__constructcác cuộc gọi Mage::getStoreConfig(), cuộc gọi này Mage::app()->getStore(), nhưng các cửa hàng chưa được khởi tạo và Mage_Core_Model_Store_Exceptionbị ném
  5. app/Mage.php:647 bắt ngoại lệ và trả về trang 404

Không thực sự chắc chắn giải pháp là gì, ngoài việc sửa cảnh báo và / hoặc bắt ngoại lệ khi kiểm tra phần mở rộng tệp nhật ký. Sẽ báo cáo điều này với Magento để xem họ nghĩ gì.


bạn đang sử dụng phiên bản nào?
Biểu tượng

1
@Icon 1.9.3.6. Tôi đã nhận thấy rằng một số dự án ít cập nhật của chúng tôi không có __construct()phương pháp này Mage_Log_Helper_Data, vì vậy sẽ không bị ảnh hưởng bởi điều này, nhưng cả phiên bản cộng đồng và doanh nghiệp mới nhất đều làm.
Tomas Gerula viêm

Có vẻ như magento đã giải quyết câu hỏi này devdocs.magento.com/guides/m1x/ce19-ee114/ Kẻ
Biểu tượng

Magento có đề cập đến việc họ có kế hoạch khắc phục vấn đề này với bản vá tiếp theo không?
Biểu tượng

1
@Icon Chúng tôi đã thấy lỗi trong quản trị viên cũng như frontend, vì sự cố đã xảy ra trong quá trình khởi tạo cấu hình của Magento.
Tomas Gerula viêm

8

1. Đã giải quyết: Vấn đề về khóa bí mật không hợp lệ khi người dùng tải Quản trị viên

Trong bản vá này, Magento không còn hiển thị “Invalid Secret Key. Please refresh the page.” message when a user loads the Admin.

Bằng cách thay đổi mã tại

app/code/core/Mage/Adminhtml/Controller/Action.php

nghiêm ngặt tất cả mật khẩu của khách hàng với độ dài MAX 256:

Chúng ta đã biết rằng độ dài tối thiểu của mật khẩu magento 1.x là 6 .

nhưng trong bản vá này magento có giới hạn chiều dài tối đa là 256.

Trường hợp này, magento đã làm thay đổi tại chức năng validate() của mô hình khách hàng lớp Vì vậy, nếu có ai có ghi đè lên lớp và cũng ghi đè sau đó họ nên thêm bên dưới mã trênthat override class

if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
   $errors[] = Mage::helper('customer')
       ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
}

Thêm $this->escapeHtml()và Mage :: helper ('core') -> quoteEscape () cho một số tệp có thể tấn công XSS

Nếu bất cứ ai ghi đè các tệp này thì bạn nên thêm mã bên dưới để kiểm tra lại lớp ghi đè 1.app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php

thay thế

$ this -> _ headerText = Mage :: helper ('báo cáo') -> __ ('Đánh giá cho% s', $ sản phẩm-> getName ());

với

$ this -> _ headerText = Mage :: helper ('báo cáo') -> __ ('Nhận xét cho% s', $ this-> escHtml ($ sản phẩm-> getName ()));

2.app/code/core/Mage/Adminhtml/Block/Report/Tag/Sub/Detail.php

thay thế

$ this -> _ headerText = Mage :: helper ('báo cáo') -> __ ('Thẻ được gửi tới% s', $ sản phẩm-> getName ());

với

$this->_headerText = Mage::helper('reports')->__('Tags submitted to %s', $this->escapeHtml($product->getName()));

3.app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php

thay thế

'text' => '<a href="' . $this->getUrl('*/catalog_product/edit', array('id' => $product->getId())) . '" onclick="this.target=\'blank\'">' . $product->getName() . '</a>'

với

'text' => '<a href="' . $this->getUrl('*/catalog_product/edit', array('id' => $product->getId())) . '" onclick="this.target=\'blank\'">' . $this->escapeHtml($product->getName()) . '</a>'

  1. Đơn đặt hàng xem thanh toán đồng ý: ứng dụng / thiết kế / adminhtml / mặc định / mặc định / mẫu / bán hàng / thanh toán / thỏa thuận / xem / tab / thông tin.

thay thế

<?php echo $this->getCustomerEmail() ?>

với

<?php echo $this->escapeHtml($this->getCustomerEmail()) ?>

  1. ứng dụng / thiết kế / adminhtml / default / default / template / xmlconnect / edit / tab / content.phtml của Mage :: helper ('core') -> quoteEscape

thay thế

this.pageOptions += '<option value="<?php echo $helper->jsQuoteEscape($page['value']) ?>"><?php echo $helper->jsQuoteEscape($page['label']) ?></option>';

với

$this.pageOptions += '<option value="<?php echo $helper->jsQuoteEscape($page['value']) ?>"><?php echo $helper->quoteEscape($page['label']) ?></option>';

  1. ứng dụng / thiết kế / adminhtml / default / default / template / xmlconnect / edit / tab / design / image_edit.phtml của Mage :: helper ('core') -> quoteEscape

thay thế

<option value="<?php echo $page['value']; ?>"><?php echo $page['label']; ?></option>

với

<option value="<?php echo $page['value']; ?>"><?php echo Mage::helper('core')->quoteEscape($page['label']); ?></option>


4
Cảm ơn @Amit tôi đã bỏ lỡ "Đã giải quyết: Vấn đề khóa bí mật không hợp lệ" trong ans của tôi :). +1
Rama Chandran M

1
bạn hoan nghênh :) ... bạn đã hoàn thành tốt câu hỏi này
Amit Bera

7

Nếu bạn đã áp dụng SUPEE-10353 ^ hoặc được vá thủ công app/code/core/Mage/Adminhtml/Controller/Action.phpcho vấn đề " Khóa bí mật không hợp lệ ", thì bạn sẽ cần xóa thủ công phần đó khỏi tệp vá:

diff --git app/code/core/Mage/Adminhtml/Controller/Action.php app/code/core/Mage/Adminhtml/Controller/Action.php
index 2a8e63f..f2ee208 100644
--- app/code/core/Mage/Adminhtml/Controller/Action.php
+++ app/code/core/Mage/Adminhtml/Controller/Action.php
@@ -186,7 +186,7 @@ class Mage_Adminhtml_Controller_Action extends Mage_Core_Controller_Varien_Actio
                 'message' => $_keyErrorMsg
             )));
         } else {
-                if ($_keyErrorMsg != ''){
+                if (!$_isValidFormKey){
                 Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg);
             }
             $this->_redirect( Mage::getSingleton('admin/session')->getUser()->getStartupPageUrl() );

Ngoài ra, nếu bạn đã sửa lỗi chính tả " new-pawwsord " (được giới thiệu trong SUPEE-10266) app/design/adminhtml/default/default/template/backup/dialogs.phtmlthì hãy xóa phần đó khỏi bản vá:

diff --git app/design/adminhtml/default/default/template/backup/dialogs.phtml app/design/adminhtml/default/default/template/backup/dialogs.phtml
index c5a3f82..2ff57cc 100644
--- app/design/adminhtml/default/default/template/backup/dialogs.phtml
+++ app/design/adminhtml/default/default/template/backup/dialogs.phtml
@@ -158,7 +158,7 @@
                             <td class="value">
                                 <!-- This is a dummy hidden field to trick firefox from auto filling the password -->
                                 <input type="password" class="input-text no-display" name="dummy" id="dummy" />

-                                    <input type="password" name="ftp_pass" id="ftp_pass" autocomplete="new-pawwsord">
+                                    <input type="password" name="ftp_pass" id="ftp_pass" autocomplete="new-password">
                             </td>
                         </tr>
                         <tr>

^ MageSupport đã cung cấp SUPEE-10353 để đáp lại vé hỗ trợ EE liên quan đến vấn đề UnlimitedSecretKey


5

Vấn đề: bản vá không hoạt động trên vanilla 1.9.1.1

Chỉnh sửa 1: sửa chữa được thêm vào dưới đây.

Chỉnh sửa 2: bản sửa lỗi của tôi không còn cần thiết nữa, Magento đã cung cấp SUPEE-10497 để khắc phục vấn đề này.

Vấn đề:

# file: PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh
Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

checking file app/Mage.php
checking file app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
checking file app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
checking file app/code/core/Mage/Adminhtml/Block/Review/Add.php
checking file app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
checking file app/code/core/Mage/Adminhtml/Controller/Action.php
checking file app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
checking file app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
checking file app/code/core/Mage/Api/Helper/Data.php
checking file app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
checking file app/code/core/Mage/Api/Model/Wsdl/Config.php
checking file app/code/core/Mage/Api/Model/Wsdl/Config/Base.php
checking file app/code/core/Mage/Core/Helper/String.php
checking file app/code/core/Mage/Core/Model/File/Validator/Image.php
Hunk #1 FAILED at 90.
1 out of 1 hunk FAILED
checking file app/code/core/Mage/Core/etc/config.xml
checking file app/code/core/Mage/Core/etc/system.xml
Hunk #1 succeeded at 651 (offset 1 line).
Hunk #2 succeeded at 661 (offset 1 line).
checking file app/code/core/Mage/Customer/Model/Customer.php
checking file app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
checking file app/code/core/Mage/Log/Helper/Data.php
checking file app/code/core/Mage/Rule/Model/Abstract.php
checking file app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
checking file app/code/core/Zend/Form/Decorator/Form.php
checking file app/design/adminhtml/default/default/template/backup/dialogs.phtml
checking file app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
checking file app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
checking file app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
checking file app/locale/en_US/Mage_Adminhtml.csv
checking file app/locale/en_US/Mage_Customer.csv
checking file js/mage/adminhtml/backup.js
checking file lib/Varien/Filter/FormElementName.php

Vanilla Magento 1.9.1.1 đã được tải xuống từ https://github.com/OpenMage/magento-mirror/archive/1.9.1.1.tar.gz

Các bản vá được áp dụng trước đây trên Magento 1.9.1.1 này:

2017-11-29 07:37:12 UTC | SUPEE-5994 | CE_1.6.0.0 | v1 | _ | n/a | SUPEE-5994_CE_1.6.0.0_v1.patch
2017-11-29 07:37:12 UTC | SUPEE-6237 | EE_1.14.2.0 | v1 | 8b216c42e2e5d2cb5d8e500fcb6690abede9df52 | Fri Jun 12 13:39:59 2015 +0300 | v1.14.2.0..HEAD
2017-11-29 07:37:12 UTC | SUPEE-6285 | CE_1.9.1.1 | v2 | 7226d88b1eeb07a5fbc4e62be189a5219457cc14 | Mon Jun 22 16:32:26 2015 +0300 | 202596e441..7226d88b1e
2017-11-29 07:37:12 UTC | SUPEE-6482 | CE_1.9.2.0 | v1 |  | Tue Jul 14 14:17:04 2015 +0300 |
2017-11-29 07:37:12 UTC | SUPEE-6788 | CE_1.9.1.1 | v1 | 2349a68440e870cd68dfa81fb982f3b7a42cd099 | Fri Oct 23 14:49:16 2015 +0300 | b240663
2017-11-29 07:37:12 UTC | SUPEE-7405-CE-1-9-1-1 | CE_1.9.1.1 | v1 | f1c57f70de3fc2bea64bbe3ddf3bdf076b750f8e | Tue Jan 19 15:29:35 2016 +0200 | 2349a68440..f1c57f70de
2017-11-29 07:37:12 UTC | SUPEE-7405 | CE_1.9.1.1 | v1.1 | 38d673b4d2b132c6df53becc9d92346aa5d9627e | Fri Feb 5 13:28:39 2016 +0200 | f1c57f70de3fc2bea64bbe3ddf3bdf076b750f8e..38d673b4d2b132c6df53becc9d92346aa5d9627e
2017-11-29 07:37:12 UTC | SUPEE-7616 | CE_1.9.2.2-CE_1.8.0.0 | v1 | 1609c0d0be86473d357346fa51f93c12b365d7a1 | Tue Dec 8 12:53:31 2015 +0200 | e1fc3c59c9587427b8a9c88655715f27afbfe970..1609c0d0be86473d357346fa51f93c12b365d7a1
2017-11-29 07:37:12 UTC | SUPEE-8167 | EE_1.14.2.0 | v1 | 87bb97f9b0b2871f842b7faabf667a81806f937e | Thu Apr 27 13:31:21 2017 +0300 | 6010eb82..87bb97f9b
2017-11-29 07:37:12 UTC | SUPEE-8788 | CE_1.9.1.1 | v2 | 8d9fad1daf5131de3430ef09b0816d3d133c8412 | Mon Sep 26 14:06:18 2016 +0300 | 38d673b4d2..8d9fad1daf
2017-11-29 07:37:12 UTC | SUPEE-8967 | EE_1.13.1.0 | v1 | 1fa53e9533f6f3a16f24d9b64dabef0ab7f965d7 | Thu Aug 18 16:32:48 2016 +0300 | 97d160644..1fa53e9533
2017-11-29 07:37:13 UTC | SUPEE-9652 | EE_1.14.3.1 | v1 | 4038f0785d828794083f53f10c01aaa6af403523 | Tue Jan 24 15:03:12 2017 +0200 | 9586981e6ca8b255014b242d50b68b88525b0754..4038f0785d828794083f53f10c01aaa6af403523
2017-11-29 07:37:13 UTC | PATCH_SUPEE-9767_CE_1.9.3.0_v2 | CE_1.9.3.0 | v2 | 6566db274beaeb9bcdb56a62e02cc2da532e618c | Thu Jun 22 04:30:03 2017 +0300 | v1.14.3.3..HEAD
2017-11-29 07:37:13 UTC | SUPEE-10336_v1.14.2.4 | CE_1.9.2.4 | v1 | 721708ecf41f0ee745b8f441a4bfe56471b493a7 | Fri Sep 8 17:55:44 2017 +0300 | cc0d87..721708e
2017-11-29 07:37:13 UTC | SUPEE-10266-CE-1.9.1.1 | CE_1.9.1.1 | v1 | f66c6bcd3c16c5ca934823e6a91b5696698e497c | Fri Sep 1 12:15:53 2017 +0300 | 8d9fad1daf5131de3430ef09b0816d3d133c8412..HEAD

Bản sửa lỗi chính thức cho bản vá SUPEE-10415 cho 1.9.1.1:

  • Nếu bạn đã cài đặt SUPEE-10266:
    Hoàn nguyên nó bằng cách sử dụng: ./PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh --revert
  • Nếu bạn đã cài đặt SUPEE-10415:
    Hoàn nguyên nó bằng cách sử dụng ./PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh --revert
  • Bây giờ áp dụng SUPEE-10497

Sửa lỗi thủ công cho bản vá SUPEE-10415 cho 1.9.1.1 [không dùng nữa]:

Chỉnh sửa tập tin PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh, thay thế dòng 445- 447.

Cũ:

         $fileInfo = getimagesize($filePath);
         if (is_array($fileInfo) and isset($fileInfo[2])) {
             if ($this->isImageType($fileInfo[2])) {

Mới:

         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {

Tôi cũng đang trải nghiệm điều này. Có vẻ là một vấn đề với app/code/core/Mage/Core/Model/File/Validator/Image.php. Bản vá SUPEE-10415 dường như không xem xét sửa đổi được thực hiện bởi Bản vá SUPEE-9767 (v1 hoặc v2)
wr125

1
Sửa chữa thêm vào dưới cùng của câu trả lời của tôi.
Jeroen Vermeulen - Magehost

1
Tôi không đồng ý. Chúng tôi đã cài đặt vanilla từ github.com/OpenMage/magento-mirror/archive/1.9.2.2.tar.gz và có thể áp dụng các bản vá theo thứ tự này: SUPEE-7405-CE-1-9-2-2 | CE_1.9.2.2 | v1, SUPEE-7405 | CE_1.9.2.2 | v1.1, SUPEE-7616 | CE_1.9.2.2-CE_1.8.0.0 | v1, SUPEE-8167 | EE_1.14.2.0 | v1, SUPEE-8788 | CE_1.9.2.2 | v2, CUNG CẤP-8967 | EE_1.13.1.0 | v1, SUPEE-9652 | EE_1.14.3.1 | v1, PATCH_SUPEE-9767_CE_1.9.3.0_v2 | CE_1.9.3.0 | v2, SUPEE-10336_v1.14.2.4 | CE_1.9.2.4 | v1, SUPEE-10266-CE-1.9.2.4 | CE_1.9.2.4 | v1, SUPEE-10415-ce-1.9.2.2 | CE_1.9.2.2 | v1
Jeroen Vermeulen - Magehost

1
Bạn cần áp dụng tất cả các bản vá trước, xem bình luận trước của tôi. Tôi đã thử nó.
Jeroen Vermeulen - Magehost

4
Vui lòng sử dụng SUPEE-10497 thay vào đó, nó mới được phát hành gần đây để giải quyết vấn đề này vào ngày 1.9.1.1. Vui lòng đọc ghi chú phát hành vì bản vá này yêu cầu xóa SUPEE-10266 trước khi cài đặt.
Piotr Kaminski

3

Dưới đây là nhật ký thay đổi hoàn toàn và những gì tôi hiểu với thay đổi này

Và những tập tin nào bị ảnh hưởng bởi nguyên nhân được liệt kê dưới đây

Thoát khỏi thay đổi Html

tập tin

app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
app/code/core/Mage/Adminhtml/Block/Review/Add.php
app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
js/mage/adminhtml/backup.js

Thêm DS thay thế '/'

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

thêm tập tin mới

app/code/core/Zend/Form/Decorator/Form.php
lib/Varien/Filter/FormElementName.php

Hoàn tất thay đổi tập tin

ứng dụng / mã / lõi / Mage / adminhtml / Model / System / Config / Backend / Filename.php

 class Mage_Adminhtml_Model_System_Config_Backend_Filename extends Mage_Core_Model_Config_Data
 {
+
+ /**
+ * Config path for system log file.
+ */
+ const DEV_LOG_FILE_PATH = 'dev/log/file';
+
+ /**
+ * Config path for exception log file.
+ */
+ const DEV_LOG_EXCEPTION_FILE_PATH = 'dev/log/exception_file';
+
+ /**
+ * Processing object before save data
+ *
+ * @return Mage_Adminhtml_Model_System_Config_Backend_Filename
+ * @throws Mage_Core_Exception
+ */
 protected function _beforeSave()
 {
- $value = $this->getValue();
- $value = basename($value);
+ $value = $this->getValue();
+ $configPath = $this->getPath();
+ $value = basename($value);
+
+ // if dev/log setting, validate log file extension.
+ if ($configPath == self::DEV_LOG_FILE_PATH || $configPath == self::DEV_LOG_EXCEPTION_FILE_PATH) {
+ if (!Mage::helper('log')->isLogFileExtensionValid($value)) {
+ throw Mage::exception('Mage_Core', Mage::helper('adminhtml')->__
+ ('Invalid file extension used for log file. Allowed file extensions: log, txt, html, csv'));
+ }
+ }
+
     $this->setValue($value);
     return $this;
 }

Đã thêm phương thức getCacheId () và getServiceUrl ()

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

Đã thêm phương thức unserialize ()

app/code/core/Mage/Core/Helper/String.php

Sử dụng phương thức getServiceUrl () được tạo trong app / code / core / Mage / Api / Helper / Data.php

app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Api/Model/Wsdl/Config/Base.php

Sử dụng phương thức getCacheId () được tạo trong app / code / core / Mage / Api / Helper / Data.php

app/code/core/Mage/Api/Model/Wsdl/Config.php

Được sử dụng unserialize()phương pháp trên được tạo trong app / code / core / Mage / Core / Helper / String.php

app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
app/code/core/Mage/Rule/Model/Abstract.php

Thay đổi bình luận

app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/system.xml

Đã thêm nhận xét

app/code/core/Mage/Core/etc/config.xml

Đã thêm độ dài mật khẩu tối đa

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

Đã thêm cho phép mở rộng tệp // $ _ allowFileExtensions = mảng ('log', 'txt', 'html', 'csv');

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

Không biết thay đổi gì

app/design/adminhtml/default/default/template/backup/dialogs.phtml

Danh sách phát hành

SUPEE-10415 ngăn chặn kiểm soát giỏ

nhận mã lỗi # 10415 trong paypal trong magento


1

Đã thử điều này trên Magento EE 1.13.0.2 và có vẻ như bản vá này không hoạt động tốt nếu SUPEE-6482 được cài đặt.

Checking patch app/code/core/Mage/Api/Model/Server/Adapter/Soap.php...
error: while searching for:
            ->setUseSession(false);

        $wsdlUrl = $params !== null
            ? $urlModel->getUrl('*/*/*', array('_current' => true, '_query' => $params))
            : $urlModel->getUrl('*/*/*');

        if( $withAuth ) {
            $phpAuthUser = $this->getController()->getRequest()->getServer('PHP_AUTH_USER', false);

error: patch failed: app/code/core/Mage/Api/Model/Server/Adapter/Soap.php:205

SUPEE-6482 đã thay đổi dòng $phpAuthUserthành

$phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));

Không chỉ là $phpAuthUserdòng khác nhau, khoảng cách trước ->setUseSession(false);đó cũng không chính xác
DanCarlyon
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.