Исправление безопасности SUPEE-10415 - Возможные проблемы?

37

Выпущен новый патч Magento 1, SUPEE-10415 .

Этот патч обеспечивает защиту от нескольких типов проблем, связанных с безопасностью

Информационная страница: https://magento.com/security/patches/supee-10415
Страница загрузки: https://magento.com/tech-resources/download

Какие возможные проблемы следует остерегаться?

Также, пожалуйста, поделитесь всеми ошибками и проблемами, которые вы обнаружили после установки патча.


  • Проблема с применением SUPEE-10415 на ванили 1.9.1.1 , показывает , не может быть применена в связи с сообщением об ошибке ломтя на image.php . РЕДАКТИРОВАТЬ: С 7 декабря 2017 года исправление предоставляется в SUPEE-10497

  • Должен быть установлен 8788 Версии 2 , иначе будут отображаться ошибки «Неподдерживаемый тип данных». Больше информации.

  • «404: страница не найдена» из каталога ошибок / после обновления до SUPEE-10415. Эта проблема возникает только в установках Magento, которые запускают определенные сторонние расширения.
    Обходной путь: Убедитесь, что нет предупреждений PHP, генерируемых какими-либо расширениями или настройками.
Значок
источник
5
Внедрено без проблем в Magento 1.9.2.4CE здесь - большинство изменений, похоже, связаны с обработкой переменных в admin, в частности, сохранением файла журнала. Похоже, что мыло api претерпело несколько изменений в плане дезинфекции. Обзоры также очищаются в области администрирования, поэтому возможна эксплойт, когда вредоносный код может быть опубликован в обзоре в МО (спекулятивный)
Рики Один Мэттьюс
2
Развернуто на Magento 1.9.3.0 CE здесь нет проблем. Патч перед ним 10266 необходим, если вы еще не применили этот патч.
danmentzer
1
На 1.9.1.0 - в «Правилах цен для корзины покупок» патч вызывает ошибку - серьезная ошибка в правиле просмотра - запись в журнале -a: 5: {i: 0; s: 23: «Неподдерживаемый тип данных N»; i: 1; s: 1464: "# 0 /opt/bitnami/apps/magento/htdocs/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue-> read ('N', ';') ---- исправлена ​​реверсия патча, так что это что-то в SUPEE-10415
Laith
1
У меня нет репутации, чтобы публиковать ответ, но вы не можете перейти на Magento 1.9.3.7 и затем использовать Git для слияния с этим патчем: константа MAXIMUM_PASSWORD_LENGTH добавляется дважды, если вы используете поведение Git по умолчанию (понятия не имею, если есть настройки, которые являются обходными путями для этого).
toon81
1
Для проблем 1.9.1.1: используйте вместо этого SUPEE-10497, он был выпущен недавно для решения этой проблемы на 1.9.1.1. Пожалуйста, прочтите примечания к выпуску, так как этот патч требует удаления SUPEE-10266 перед установкой.
Петр Каминский

Ответы:

26

Приведенные ниже файлы обновляются / добавляются после примененного патча 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

Некоторые важные моменты:

1) Разрешенные расширения файлов: log, txt, html, csv. проверьте ниже файлы

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) Максимальная длина пароля - 256 символов, проверка в app/code/core/Mage/Customer/Model/Customer.phpфайле

@@ -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.');

Для EE Edition добавлены четыре дополнительных файла

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

Некоторые важные моменты в EE

Добавлено условие в файлы ниже

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

Пожалуйста, обновите условие ниже в ваших файлах темы.

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

За дополнительной информацией:

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

Рама Чандран М
источник
Как можно решить эту проблему после применения SUPEE-10415, и на входе, и на входе появляется ошибка 404? magento.stackexchange.com/q/215620/57334
августа
Можете ли вы создать отдельный тикет и объяснить с помощью журнала ошибок и добавить комментарий, я вам помогу. эта проблема из-за .htaccess или переопределить модуль в локальном.
Рама Чандран М
20

SUPEE-10415 ...

  1. Решает некоторые проблемы XSS в админ-панели в следующих областях:

    • Отчет об обзорах продуктов
    • Отчет о продуктах
    • Отзывы о продукте добавить / изменить интерфейс
    • Соглашения о выставлении счетов
    • вкладка редактора содержимого xmlconnect
    • Сериализованные правила
  2. Ограничение расширений файлов, которые можно использовать для файлов системы и журналов исключений. Допустимые расширения файлов: .log, .txt, .html,.csv

  3. Устанавливает верхний предел в 256 символов для паролей учетных записей клиентов. Это конкретное изменение смешно; не уверен, откуда они взяли эту яркую идею.

Похоже, что ни одно из этих изменений не является массовым нарушением или несовместимостью с изменениями, кроме, возможно, ограничения длины пароля пользователя.

т-Richards
источник
9
Длина пароля 256 на самом деле является ошибкой в ​​непатентованном Magento, потому что поле пароля базы данных находится в customer_entity_varchar.value, значение которого равно maxlength = 255. Неопределенно, что происходит без патча, если вы пытаетесь установить дольше, чем 255, вероятно, это вызывает проблему.
Рики Один Мэттьюс
12
Вы правы; customer_entity_varchar.value имеет ограниченный размер столбца. Тем не менее, это не ошибка, потому что пароль не хранится в этом столбце. Соленая и Хешированное пароль хранится там. Это значение всегда будет иметь фиксированную длину, независимо от размера исходного пароля. До этого патча не было бы абсолютно никаких проблем с вводом пароля длиннее 255 символов.
t-richards
3
Я предполагаю, что изменение длины пароля как-то связано с APPSEC-1330. magento.com/security/patches/supee-10415
квазиобъект
7
Возможно, это их мышление, Роб: stackoverflow.com/a/98857/8199523
RickyMage123
1
@ Т-Ричардс замечательный момент, вы здесь. Почему вы думаете, что они это сделают, я думаю, что, может быть, хеширование длинного пароля может вызвать проблему DoS с точки зрения использования ЦП, конечно, более длинный пароль требует больше ЦП / памяти в PHP для хеширования?
Рикки Один Мэтьюз
12

SUPEE 10415 Требуется патч 8788 v2

Я столкнулся с той же ошибкой, что и в предыдущем посте, но, похоже, она была удалена.

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";}

Я обнаружил вышеуказанную ошибку при установке нового патча на M 1.8.00 CE. Похоже, что конкретная причина заключается в том, что в патче v2 8788 мы исправили вручную большинство проблем из этого патча, но мы пропустили несериализованные части.

Вместо того, чтобы отменить патч, я вручную внес изменения и теперь сайт работает нормально.

Ниже вы найдете код для патча 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;
+    }
+}

Вы также можете прочитать больше об ошибке из этого поста . РЕШЕНО: новый класс Unserialize_Parser генерирует исключения для значений NULL.

danmentzer
источник
Ага! Хороший вопрос, 8788 V2 требуется, чтобы предотвратить проблему!
Иконка
Подскажите, пожалуйста, на каких страницах вашего сайта вы увидели ошибки "Неподдерживаемый тип данных"? Пытаюсь повторить.
Иконка
Я смог вызвать его на странице категории, странице товара и корзине, пока товар был в корзине.
danmentzer
@danmentzer Как я могу решить эту ошибку, отменить патч 9767 v1 :: ошибка: justpaste.it/1e9pn
zus
@zus Я только что увидел ваш пост, вы поняли это из внешнего вида вашей пасты, я бы рискнул предположить три различных возможных причины вашей ошибки. 1. У вас неправильная версия патча (это наименее вероятно) 2. Ваш патч уже не применен. 3. Может быть, вы вручную исправили некоторые из них, и патч не нравится, как вы это сделали. Извините, если это не поможет
danmentzer
11

У нас возникла проблема с этим патчем, когда на каждой странице сайта появилась ошибка «404: Страница не найдена» из errors/каталога. После небольшого копания выясняется, что это было вызвано предупреждением PHP Mage_Core_Model_App::init, которое вызывается Mage_Core_Model_Store_Exceptionв следующих строках патча:

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. Предупреждение PHP происходит до того, как магазины были инициализированы
  2. Получает предупреждение mageCoreErrorHandler(), которое вызывает Mage::log()запись сообщения в файл журнала.
  3. Mage::log() звонки Mage::helper('log')
  4. Mage_Log_Helper_Data::__constructзвонки Mage::getStoreConfig(), которые звонят Mage::app()->getStore(), но магазины еще не были инициализированы и Mage_Core_Model_Store_Exceptionвыбрасывается
  5. app/Mage.php:647 ловит исключение и возвращает страницу 404

Не совсем уверен, что решение пока, кроме исправления предупреждения и / или перехвата исключения при проверке расширения файла журнала. Собираюсь сообщить об этом Magento, чтобы увидеть, что они думают.

Томас Герулайтис
источник
какую версию вы используете?
Иконка
1
@ Иконка 1.9.3.6. Я заметил, что некоторые из наших менее современных проектов не имеют этого __construct()метода Mage_Log_Helper_Data, поэтому не пострадают от этого, но как в последних версиях сообщества, так и в корпоративных версиях.
Томас Герулайтис
Похоже, magento обратился к этому вопросу devdocs.magento.com/guides/m1x/ce19-ee114/…
Icon
Magento упомянул, планируют ли они исправить эту проблему с помощью следующего патча?
Иконка
1
@Icon Мы видели ошибки как в админке, так и во внешнем интерфейсе, потому что проблема возникала во время инициализации конфигурации Magento.
Томас Герулайтис
8

1.Решено: проблема с неверным секретным ключом, когда пользователь загружает администратора

В этих патчах Magento больше не отображает “Invalid Secret Key. Please refresh the page.” message when a user loads the Admin .

Изменяя код в

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

Строгий пароль для всех клиентов до MAX 256:

Мы уже знаем, что минимальная длина пароля magento 1.x составляет 6 .

но в этом патче magento ограничивает максимальную длину 256.

В этом случае, Magento сделал изменения на функции от validate() от модели Customer класса .so, если кто -то имеет переопределить класс и переопределить то они должны добавить ниже код наthat 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);
}

Добавьте $this->escapeHtml()и Mage :: helper ('core') -> quoteEscape () для некоторых файлов, где возможна атака XSS

Если кто-то переопределяет эти файлы, вам следует добавить приведенный ниже код для переопределения класса переопределения 1.app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php

замещать

$ this -> _ headerText = Mage :: helper ('reports') -> __ ('Отзывы о% s', $ product-> getName ());

с

$ this -> _ headerText = Mage :: helper ('reports') -> __ ('Отзывы о% s', $ this-> escapeHtml ($ product-> getName ()));

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

замещать

$ this -> _ headerText = Mage :: helper ('reports') -> __ ('Теги отправлены в% s', $ product-> getName ());

с

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

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

замещать

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

с

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

  1. Соглашение об оплате с представлением заказа на продажу: app / design / adminhtml / default / default / template / sales / billing / Agreement / view / tab / info.phtml

замещать

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

с

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

  1. app / design / adminhtml / default / default / template / xmlconnect / edit / tab / content.phtml от Mage :: helper ('core') -> quoteEscape

замещать

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

с

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

  1. app / design / adminhtml / default / default / template / xmlconnect / edit / tab / design / image_edit.phtml от Mage :: helper ('core') -> quoteEscape

замещать

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

с

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

Амит Бера
источник
4
Спасибо @Amit, я пропустил «Решено: Неверный секретный ключ» в моем ответе :). +1
Рама Чандран М
1
Добро пожаловать
Амит Бера
7

Если вы уже применили SUPEE-10358 ^ или вручную исправили проблему app/code/core/Mage/Adminhtml/Controller/Action.php« Неверный секретный ключ », то вам нужно будет вручную удалить этот раздел из файла исправления:

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() );

Кроме того, если вы уже исправили опечатку " new-pawwsord " (представленную в SUPEE-10266), app/design/adminhtml/default/default/template/backup/dialogs.phtmlто удалите этот раздел и из патча:

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 предоставил SUPEE-10358 в ответ на запрос поддержки EE, касающийся проблемы InvalidSecretKey

kmdsax
источник
5

Проблема: патч не работает на vanilla 1.9.1.1

Редактировать 1: исправление добавлено ниже.

Редактировать 2: мое исправление больше не требуется, Magento предоставил SUPEE-10497 который эту проблему.

Проблема:

# 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

Ванильный Magento 1.9.1.1 был загружен с https://github.com/OpenMage/magento-mirror/archive/1.9.1.1.tar.gz

Ранее примененные патчи к этому Magento 1.9.1.1:

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

Официальное исправление для патча SUPEE-10415 для 1.9.1.1:

  • Если вы установили SUPEE-10266:
    Восстановите его, используя: ./PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh --revert
  • Если вы установили SUPEE-10415:
    верните его, используя ./PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh --revert
  • Теперь примените SUPEE-10497

Ручное исправление для патча SUPEE-10415 для 1.9.1.1 [устарело]:

Отредактируйте файл PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh, замените строки 445-447 .

Старый:

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

Новое:

         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
Йерун Вермейлен - MageHost
источник
Я тоже испытываю это. Кажется, проблема с app/code/core/Mage/Core/Model/File/Validator/Image.php. Патч SUPEE-10415, по-видимому, не учитывает изменения, внесенные Патчем SUPEE-9767 (v1 или v2)
wr125
1
Исправление добавлено внизу моего ответа.
Йерун Вермейлен - MageHost
1
Я не согласна Мы взяли ванильную установку с github.com/OpenMage/magento-mirror/archive/1.9.2.2.tar.gz и смогли применить исправления в следующем порядке: 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, SUPEE-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
Йерун Вермейлен - MageHost
1
Вам нужно применить все предыдущие патчи, см. Мой предыдущий комментарий. Я проверял это.
Йерун Вермейлен - MageHost
4
Пожалуйста, используйте вместо этого SUPEE-10497, он был выпущен недавно для решения этой проблемы на 1.9.1.1. Пожалуйста, прочтите примечания к выпуску, так как этот патч требует удаления SUPEE-10266 перед установкой.
Петр Каминский
3

Вот полный журнал изменений и что я понимаю с этим журналом изменений

И на какие файлы повлияла причина, указанная ниже

Escape Html change

файл

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

Добавьте DS вместо '/'

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

добавлен новый файл

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

Полный файл изменений

Приложение / код / ​​ядро ​​/ Mage / Adminhtml / модель / 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;
 }

Добавлены методы getCacheId () и getServiceUrl ()

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

Добавлен метод unserialize ()

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

Используйте метод getServiceUrl (), созданный в 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

Используйте метод getCacheId (), созданный в app / code / core / Mage / Api / Helper / Data.php

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

Использованный выше unserialize()метод создан в 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

Изменение комментария

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

Комментарий добавлен

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

Добавлена ​​максимальная длина пароля

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

Добавлено расширение разрешенного файла // $ _ allowFileExtensions = array ('log', 'txt', 'html', 'csv');

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

Не знаю, что изменить

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

Список вопросов

SUPEE-10415 предотвращает контроль корзины

получить код ошибки # 10415 в PayPal в Magento

Муртуза Забуавала
источник
1

Попытка сделать это на Magento EE 1.13.0.2, и кажется, что этот патч не работает, если установлен SUPEE-6482.

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 изменил строку с $phpAuthUserна

$phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
DanCarlyon
источник
Мало того, что $phpAuthUserлиния отличалась от расстояния до того, ->setUseSession(false);также было неверно
ДанКарлион