Patch de segurança SUPEE-10415 - Possíveis problemas?

37

O novo patch do Magento 1 foi lançado, SUPEE-10415 .

Este patch fornece proteção contra vários tipos de problemas relacionados à segurança

Página de informações: https://magento.com/security/patches/supee-10415
Página de download: https://magento.com/tech-resources/download

Quais são os possíveis problemas a serem observados?

Além disso, compartilhe todos os erros e problemas encontrados após a instalação do patch.


  • Problema ao aplicar o SUPEE-10415 no vanilla 1.9.1.1 , os shows não podem ser aplicados devido à mensagem de erro do hunk no Image.php . EDIT: A partir de 7 de dezembro de 2017, a correção é fornecida em SUPEE-10497

  • Deve ter 8788 versões 2 instaladas, caso contrário, serão exibidos os erros "Tipo de dados não suportados". Mais informações.

  • Erro "404: página não encontrada" no diretório errors / após a atualização para SUPEE-10415. Esse problema ocorre apenas nas instalações do Magento que executam certas extensões de terceiros.
    Solução alternativa: confirme se não há avisos do PHP gerados por nenhuma das extensões ou personalizações.
Ícone
fonte
5
Implantado sem problemas no Magento 1.9.2.4CE aqui - a maioria das alterações parece ser saneamento de variáveis ​​no administrador, especificamente o salvamento de arquivos de log. Parece haver algumas mudanças na API do sabão também em termos de higienização. Comentários também são higienizados na área administrativa, portanto, pode haver uma possível explorar, onde o código malicioso pode ser postado em uma revisão no mo (especulativa)
Ricky Odin Matthews
2
Implantado no Magento 1.9.3.0 CE, sem problemas aqui. O patch anterior 10266 é necessário se você ainda não o aplicou.
danmentzer
11
Em 1.9.1.0 - nas "Regras de preço do carrinho de compras", o patch causa uma falha - regra de erro grave na exibição - entrada de log -a: 5: {i: 0; s: 23: "Tipo de dados não suportado N"; i: 1; s: 1464: "# 0 /opt/bitnami/apps/magento/htdocs/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue-> read ('N', ';') ---- patch de reversão fixo por isso é algo em SUPEE-10415
Laith
11
Não tenho reputação de postar uma resposta, mas você não pode atualizar para o Magento 1.9.3.7 e, em seguida, usar o Git para mesclar com este patch: a constante MAXIMUM_PASSWORD_LENGTH será adicionada duas vezes se você usar o comportamento padrão do Git (nenhuma idéia se houver) configurações que são soluções alternativas para isso).
toon81
11
Para problemas do 1.9.1.1: Em vez disso, use SUPEE-10497, ele foi lançado recentemente para solucionar esse problema no 1.9.1.1. Leia as notas de versão, pois este patch requer a remoção do SUPEE-10266 antes da instalação.
Piotr Kaminski

Respostas:

26

Os arquivos abaixo são atualizados / adicionados após o patch aplicado 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

Alguns pontos importantes:

1) Extensões de arquivo permitidas: log, txt, html, csv. confira os arquivos abaixo

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) O comprimento máximo da senha definido é de 256 caracteres e o app/code/core/Mage/Customer/Model/Customer.phparquivo de verificação de validação

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

Para a edição EE Adicionados quatro arquivos adicionais

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

Alguns pontos improtantes no EE

Adicionada uma condição nos arquivos abaixo

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

Atualize a condição abaixo nos seus arquivos de tema.

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

Para maiores informações:

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

Rama Chandran M
fonte
Depois de aplicar o SUPEE-10415, o front-end e o back-end obtendo um erro 404, como posso resolver esse problema? magento.stackexchange.com/q/215620/57334
zus 03/03
Você pode criar um ticket separado e explicar com o log de erros e Adicionar um comentário, eu o ajudarei. esse problema devido a .htaccess ou substitua o módulo no local.
Rama Chandran M
20

SUPEE-10415 ...

  1. Resolve alguns problemas de XSS do painel de administração nas seguintes áreas:

    • Relatório de análises de produtos
    • Relatório de tags do produto
    • Interface de adicionar / editar análises de produtos
    • Contratos de cobrança
    • Guia do editor de conteúdo xmlconnect
    • Regras serializadas
  2. Restringe as extensões de arquivo que podem ser usadas para os arquivos de log do sistema e de exceção. Extensões de arquivos permitidos: .log, .txt, .html,.csv

  3. Coloca um limite superior de 256 caracteres nas senhas da conta do cliente. Essa mudança em particular é ridícula; não sei de onde eles tiraram essa ideia brilhante.

Nenhuma dessas alterações parece ser massivamente quebrada ou incompatível com versões anteriores, exceto talvez pela restrição de comprimento da senha do cliente.

t-richards
fonte
9
O tamanho da senha de 256 na verdade é um bug no Magento não corrigido, porque o campo de senha do banco de dados está em customer_entity_varchar.value que é maxlength = 255. Não saiba o que acontece sem o patch se você tentar definir mais de 255, provavelmente causa um problema.
Ricky Odin Matthews
12
Você está correto; customer_entity_varchar.value possui um tamanho de coluna limitado. No entanto, não é um erro, porque a senha não está armazenada nessa coluna. A senha salgada e com hash é armazenada lá. Esse valor sempre terá um comprimento fixo, independentemente do tamanho da senha original. Antes deste patch, não havia absolutamente nenhum problema ao digitar uma senha com mais de 255 caracteres.
t-Richards
3
Estou assumindo que a alteração no tamanho da senha tem algo a ver com o APPSEC-1330. magento.com/security/patches/supee-10415
quasiobject
7
Talvez este seja o seu pensamento, Rob: stackoverflow.com/a/98857/8199523
RickyMage123
11
@ t-richards grande ponto, você está aí. Por que você achou que eles fariam isso? Estou pensando que talvez o hash de uma senha longa possa causar um problema de DoS em termos de uso da CPU. Certamente, uma senha mais longa leva mais CPU / Memória no PHP para o hash?
Ricky Odin Matthews
12

SUPEE 10415 Requer patch 8788 v2

Encontrei o mesmo erro de uma postagem anterior, mas parece que ela foi removida.

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

Encontrei o erro acima ao instalar o novo patch no M 1.8.00 CE. A causa específica parece dever-se ao fato de o patch v2 de 8788 ter feito correções manuais para a maioria dos problemas desse patch, mas perdemos as partes não serializadas.

Em vez de reverter o patch, fiz manualmente as modificações e agora o site está funcionando corretamente.

Abaixo você encontrará o código para o patch 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 [email protected] 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;
+    }
+}

Você também pode ler mais sobre o erro desta postagem RESOLVIDO: nova classe Unserialize_Parser lança exceções em valores NULL

danmentzer
fonte
aha! ponto positivo, é necessário o 8788 V2 para evitar o problema!
Icon
Você pode dizer em quais páginas do seu site você viu erros "Tipo de dados não suportados"? Tentando replicar.
Icon
Consegui acioná-lo na página de categoria e na página e no carrinho do produto enquanto um produto estava no carrinho.
Danmentzer 29/11
@danmentzer Como posso resolver o erro, remendo revert 9767 v1 :: erro: justpaste.it/1e9pn
ZUS
@zus Acabei de ver o seu post. Você descobriu isso com base na aparência da sua pasta? Atrevo-me a adivinhar três razões possíveis para o seu erro. 1. Você tem a versão incorreta do patch (é a menos provável) 2. Seu patch já não foi aplicado. 3. Talvez você tenha corrigido manualmente alguns deles e o patch não goste de como você o fez. Desculpe se isso não é útil
danmentzer
11

Ocorreu um problema com esse patch em que todas as páginas do site começaram a exibir o erro "404: Página não encontrada" no errors/diretório Depois de um pouco de escavação, verificou-se que foi causado por um aviso do PHP emitido em Mage_Core_Model_App::init, o que causa um Mage_Core_Model_Store_Exceptionnas seguintes linhas do patch:

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. Um aviso do PHP acontece antes que as lojas sejam inicializadas
  2. O aviso é captado por mageCoreErrorHandler(), que chama Mage::log()para registrar a mensagem no arquivo de log.
  3. Mage::log() chamadas Mage::helper('log')
  4. Mage_Log_Helper_Data::__constructchamadas Mage::getStoreConfig(), que chamadas Mage::app()->getStore(), mas as lojas ainda não foram inicializadas e uma Mage_Core_Model_Store_Exceptioné lançada
  5. app/Mage.php:647 captura a exceção e retorna uma página 404

Ainda não tenho certeza de qual é a solução, exceto corrigir o aviso e / ou capturar a exceção ao verificar a extensão do arquivo de log. Indo relatar isso ao Magento para ver o que eles pensam.

Tomas Gerulaitis
fonte
qual versão você está usando?
Icon
11
@Icon 1.9.3.6. Notei que alguns de nossos projetos menos atualizados não tinham o __construct()método Mage_Log_Helper_Data, portanto não seriam afetados por isso, mas as edições mais recentes da comunidade e da empresa têm.
Tomas Gerulaitis
Parece que o magento resolveu esta questão devdocs.magento.com/guides/m1x/ce19-ee114/…
Ícone
O magento mencionou se planeja corrigir esse problema com o próximo patch?
Icon
11
@Icon Vimos erros no admin e no frontend, porque o problema estava acontecendo durante a inicialização da configuração do Magento.
Tomas Gerulaitis
8

1.Resolvido: questão inválida da chave secreta quando um usuário carrega o administrador

Nestes patches, o Magento não exibe mais o “Invalid Secret Key. Please refresh the page.” message when a user loads the Admin.

Alterando o código em

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

restrinja toda a senha do cliente ao comprimento máximo de 256:

Já sabemos que o tamanho mínimo da senha do magento 1.x é 6 .

mas neste patch o magento tem limite de comprimento máximo para 256.

Neste caso, o magento fez alterações em função da classe de modelovalidate() do cliente . Portanto, se alguém substituiu a classe e também substituiu, deve adicionar o código abaixo emthat 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);
}

Add $this->escapeHtml()and Mage :: helper ('core') -> quoteEscape () para alguns arquivos onde é possível atacar XSS

Se alguém substituir esses arquivos, adicione o código abaixo para recuperar a classe de substituição 1.app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php

substituir

$ this -> _ headerText = Mage :: helper ('reports') -> __ ('Revisões para% s', $ product-> getName ());

com

$ this -> _ headerText = Mage :: helper ('reports') -> __ ('Revisões para% s', $ this-> escapeHtml ($ product-> getName ()));

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

substituir

$ this -> _ headerText = Mage :: helper ('reports') -> __ ('Tags enviadas para% s', $ product-> getName ());

com

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

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

substituir

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

com

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

  1. O faturamento da exibição da ordem do cliente concorda: app / design / adminhtml / padrão / padrão / modelo / vendas / faturamento / contrato / visualização / guia / info.phtml

substituir

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

com

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

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

substituir

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

com

$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 por Mage :: helper ('core') -> quoteEscape

substituir

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

com

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

Amit Bera
fonte
4
Obrigado @mitmit eu perdi "Resolvido: questão inválida da chave secreta" na minha ans :). 1
Rama Chandran M
11
você é bem-vindo:) ... você fez um bom trabalho nessa questão #
Amit Bera
7

Se você já aplicou o SUPEE-10358 ^ ou corrigiu manualmente app/code/core/Mage/Adminhtml/Controller/Action.phpo problema " Chave secreta inválida ", precisará excluir manualmente essa seção do arquivo de patch:

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

Além disso, se você já corrigiu o erro de digitação " new-pawwsord " (introduzido no SUPEE-10266) app/design/adminhtml/default/default/template/backup/dialogs.phtmle exclua essa seção do patch também:

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>

^ O MageSupport forneceu SUPEE-10358 em resposta a um tíquete de suporte de EE referente ao problema InvalidSecretKey

kmdsax
fonte
5

Problema: o patch não funciona no vanilla 1.9.1.1

Editar 1: correção adicionada abaixo.

Edit 2: minha correção não é mais necessária, o Magento forneceu SUPEE-10497, que corrige esse problema.

Problema:

# 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

O Magento 1.9.1.1 de baunilha foi baixado de https://github.com/OpenMage/magento-mirror/archive/1.9.1.1.tar.gz

Patches aplicados anteriormente neste 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

Correção oficial do patch SUPEE-10415 para 1.9.1.1:

  • Se você instalou SUPEE-10266:
    Reverta usando: ./PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh --revert
  • Se você instalou SUPEE-10415:
    reverta-o usando ./PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh --revert
  • Agora aplique SUPEE-10497

Correção manual do patch SUPEE-10415 para 1.9.1.1 [obsoleto]:

Edite o arquivo PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh, substitua as linhas 445-447 .

Velho:

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

Novo:

         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
Jeroen Vermeulen - MageHost
fonte
Eu também estou experimentando isso. Parece ser um problema app/code/core/Mage/Core/Model/File/Validator/Image.php. Remendo SUPEE-10415 parece não levar em consideração a modificação feita pelo remendo SUPEE-9767 (v1 ou v2)
wr125
11
Correção adicionada ao final da minha resposta.
Jeroen Vermeulen - MageHost
11
Eu não concordo Fizemos uma instalação básica do github.com/OpenMage/magento-mirror/archive/1.9.2.2.tar.gz e pudemos aplicar patches nesta ordem: 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
Jeroen Vermeulen - MageHost 29/11
11
Você precisa aplicar todos os patches anteriores, veja meu comentário anterior. Eu testei.
Jeroen Vermeulen - MageHost 29/11
4
Em vez disso, use SUPEE-10497, ele foi lançado recentemente para solucionar esse problema no 1.9.1.1. Leia as notas de versão, pois este patch requer a remoção do SUPEE-10266 antes da instalação.
Piotr Kaminski
3

Aqui está o log de alterações completo e o que eu entendo com este changelog

E quais arquivos foram afetados por qual causa está listada abaixo

Alteração de escape do HTML

Arquivo

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

Adicionar DS em vez disso '/'

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

novo arquivo adicionado

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

Arquivo de alteração completo

app / code / core / 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;
 }

Adicionado método getCacheId () e getServiceUrl ()

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

Método adicionado unserialize ()

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

Use o método getServiceUrl () criado em 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

Use o método getCacheId () criado em app / code / core / Mage / Api / Helper / Data.php

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

Utilizado acima do unserialize()método criado em 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

Alteração de comentário

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

Comentário adicionado

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

Adicionado comprimento máximo de senha

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

Adicionada extensão de arquivo de permissão // $ _ allowedFileExtensions = array ('log', 'txt', 'html', 'csv');

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

Não sei que mudança

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

Lista de Emissões

SUPEE-10415 impede o controle do cesto

obter código de erro # 10415 no paypal em magento

Murtuza Zabuawala
fonte
1

Tentando fazer isso no Magento EE 1.13.0.2 e parece que esse patch não funciona muito bem se o SUPEE-6482 estiver instalado.

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 alterou a linha com $phpAuthUserpara

$phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
DanCarlyon
fonte
A linha não era apenas $phpAuthUserdiferente, o espaçamento anterior ->setUseSession(false);também estava incorreto #
DanCarlyon 29/11