Patch di sicurezza SUPEE-10415 - Possibili problemi?


37

È stata rilasciata la nuova patch Magento 1, SUPEE-10415 .

Questa patch fornisce protezione contro diversi tipi di problemi relativi alla sicurezza

Pagina di informazioni: https://magento.com/security/patches/supee-10415
Pagina di download: https://magento.com/tech-resources/download

Quali sono i possibili problemi a cui prestare attenzione?

Inoltre, ti preghiamo di condividere tutti i bug e i problemi che hai riscontrato dopo l'installazione della patch.


  • Problema con l'applicazione di SUPEE-10415 su vanilla 1.9.1.1 , gli spettacoli non possono essere applicati a causa del messaggio di errore di hunk su Image.php . EDIT: dal 7 dicembre 2017 la correzione è fornita in SUPEE-10497

  • Deve essere installato 8788 versioni 2 , altrimenti verranno visualizzati errori "Tipo di dati non supportato". Ulteriori informazioni.

  • Errore "404: Pagina non trovata" dalla directory degli errori / dopo l'aggiornamento a SUPEE-10415. Questo problema si verifica solo nelle installazioni di Magento che eseguono determinate estensioni di terze parti.
    Soluzione alternativa: confermare che non vi sono avvisi PHP generati da nessuna delle estensioni o personalizzazioni.

5
Distribuito senza problemi su Magento 1.9.2.4CE qui - la maggior parte delle modifiche sembra essere il risanamento delle variabili in admin, in particolare il salvataggio dei file di registro. Sembra esserci qualche modifica all'api del sapone anche in termini di sanificazione. Le recensioni sono anche sterilizzate nell'area di amministrazione, quindi potrebbe esserci un possibile exploit in cui il codice dannoso può essere pubblicato in una recensione al momento (speculativo)
Ricky Odin Matthews,

2
Distribuito su Magento 1.9.3.0 CE senza problemi qui. La patch precedente 10266 è necessaria se non è già stata applicata quella patch.
danmentzer,

1
Il 1.9.1.0 - nelle "Regole dei prezzi del carrello" la patch provoca un errore - errore di visualizzazione nella regola - voce di registro -a: 5: {i: 0; s: 23: "Tipo di dati non supportato N"; i: 1; s: 1464: "# 0 /opt/bitnami/apps/magento/htdocs/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue-> read ('N', ';') ---- la correzione delle patch è stata risolta, quindi è qualcosa in SUPEE-10415
Laith

1
Non ho la reputazione di pubblicare una risposta, ma non è possibile eseguire l'aggiornamento a Magento 1.9.3.7 e quindi utilizzare Git per unire con questa patch: la costante MAXIMUM_PASSWORD_LENGTH viene aggiunta due volte se si utilizza il comportamento Git predefinito (non si ha idea se ci sono impostazioni che sono soluzioni alternative per questo).
toon81,

1
Per i problemi dell'1.9.1.1: utilizzare SUPEE-10497, ma è stato appena rilasciato per risolvere il problema sull'1.9.1.1. Leggere le note di rilascio poiché questa patch richiede la rimozione di SUPEE-10266 prima dell'installazione.
Piotr Kaminski,

Risposte:


26

I file seguenti vengono aggiornati / aggiunti dopo l'applicazione della patch 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

Alcuni punti importanti:

1) Estensioni di file consentite: log, txt, html, csv. controlla sotto i file

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) La lunghezza massima della password impostata è di 256 caratteri e il app/code/core/Mage/Customer/Model/Customer.phpfile di verifica della convalida

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

Per EE Edition Aggiunti quattro file aggiuntivi

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

Alcuni punti importanti in EE

Aggiunta una condizione nei file seguenti

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

Si prega di aggiornare la seguente condizione nei file del tema.

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

Per maggiori informazioni:

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


Dopo aver applicato SUPEE-10415, sia il front-end che il back-end ricevono l'errore 404, come posso risolvere questo problema? magento.stackexchange.com/q/215620/57334
zus

Puoi creare un biglietto separato e spiegare con il registro degli errori e aggiungere un commento che ti aiuterò. questo problema a causa di .htaccess o l'override del modulo in locale.
Rama Chandran M


20

SUPEE-10415 ...

  1. Risolve alcuni problemi XSS del pannello di amministrazione nelle seguenti aree:

    • Rapporto sulle recensioni dei prodotti
    • Rapporto sui tag del prodotto
    • Recensioni di prodotti aggiungere / modificare l'interfaccia
    • Gli accordi di fatturazione
    • scheda dell'editor del contenuto xmlconnect
    • Regole serializzate
  2. Limita le estensioni dei file che possono essere utilizzate per i file di registro delle eccezioni e del sistema. Estensioni di file consentiti: .log, .txt, .html,.csv

  3. Inserisce un limite superiore di 256 caratteri nelle password dell'account cliente. Questo particolare cambiamento è ridicolo; non sono sicuro da dove abbiano preso questa brillante idea.

Nessuna di queste modifiche sembra essere una rottura massiccia o incompatibile con le versioni precedenti, tranne forse per la limitazione della lunghezza della password del cliente.


9
La lunghezza della password 256 è in realtà un bug in Magento senza patch, perché il campo della password del database è in customer_entity_varchar.value che è maxlength = 255. Non si sa cosa succede senza patch se si tenta di impostare un valore più lungo di 255, probabilmente causa comunque un problema.
Ricky Odin Matthews,

12
Hai ragione; customer_entity_varchar.value ha una dimensione di colonna limitata. Tuttavia, non è un bug perché la password non è memorizzata in quella colonna. La password salata e con hash è memorizzata lì. Questo valore avrà sempre una lunghezza fissa, indipendentemente dalla dimensione della password originale. Prima di questa patch, non ci sarebbe stato assolutamente nessun problema a inserire una password più lunga di 255 caratteri.
t-richards,

3
Suppongo che la modifica della lunghezza della password abbia a che fare con APPSEC-1330. magento.com/security/patches/supee-10415
quasiobject

7
Forse questo è il loro pensiero, Rob: stackoverflow.com/a/98857/8199523
RickyMage123

1
@ t-richards ottimo punto, sei proprio lì. Perché hai pensato che l'avrebbero fatto, sto pensando che forse l'hash di una password lunga potrebbe causare un problema DoS in termini di utilizzo della CPU, sicuramente una password più lunga richiede più CPU / memoria in PHP per l'hash?
Ricky Odin Matthews,

12

SUPEE 10415 Richiede la patch 8788 v2

Ho riscontrato lo stesso errore di un post precedente ma sembra essere stato rimosso.

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

Ho riscontrato l'errore sopra riportato quando ho installato la nuova patch su M 1.8.00 CE La causa specifica sembra essere dovuta al fatto che con la patch v2 di 8788 abbiamo apportato correzioni manuali per la maggior parte dei problemi da quella patch, ma abbiamo perso le parti non serializzate.

Invece di ripristinare la patch ho apportato manualmente le modifiche e ora il sito funziona correttamente.

Di seguito troverai il codice per la 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 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;
+    }
+}

Puoi anche leggere di più sull'errore da questo post RISOLTO: la nuova classe Unserialize_Parser genera eccezioni sui valori NULL


aha! buon punto, 8788 V2 è necessario per evitare il problema!
Icona

Potete per favore dire su quali pagine del vostro sito Web sono stati visualizzati errori "Tipo di dati non supportato"? Prova di replicare.
Icona

Sono stato in grado di attivarlo nella pagina delle categorie, nella pagina del prodotto e nel carrello mentre un prodotto era nel carrello.
danmentzer,

@danmentzer come posso risolvere l'errore, ripristinare la patch 9767 v1 :: errore: justpaste.it/1e9pn
zus

@zus Ho appena visto il tuo post, lo hai capito dagli sguardi della tua pasta. Avrei potuto immaginare tre diverse possibili ragioni del tuo errore. 1. Hai la versione della patch sbagliata (questa è la meno probabile) 2. La tua patch non è già stata applicata. 3. Forse hai risolto alcuni di questi manualmente e alla patch non piace come l'hai fatta. Scusate se questo non è utile
danmentzer

11

Abbiamo riscontrato un problema con questa patch in cui ogni pagina del sito ha iniziato a mostrare l'errore "404: Pagina non trovata" dalla errors/directory. Dopo un po 'di scavo risulta che è stato causato da un avviso PHP emesso in Mage_Core_Model_App::init, che quindi causa una Mage_Core_Model_Store_Exceptiondelle seguenti righe dalla 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. Un avviso PHP si verifica prima che i negozi siano stati inizializzati
  2. L'avviso viene raccolto da mageCoreErrorHandler(), che chiama Mage::log()per registrare il messaggio nel file di registro.
  3. Mage::log() chiamate Mage::helper('log')
  4. Mage_Log_Helper_Data::__constructchiamate Mage::getStoreConfig(), che chiama Mage::app()->getStore(), ma i negozi non sono ancora stati inizializzati e Mage_Core_Model_Store_Exceptionviene lanciato un
  5. app/Mage.php:647 rileva l'eccezione e restituisce una pagina 404

Non sono ancora sicuro di quale sia la soluzione, a parte correggere l'errore e / o rilevare l'eccezione quando si controlla l'estensione del file di registro. Andando a segnalarlo a Magento per vedere cosa ne pensano.


quale versione stai usando?
Icona

1
@Icon 1.9.3.6. Ho notato che alcuni dei nostri progetti meno aggiornati non disponevano del __construct()metodo Mage_Log_Helper_Data, quindi non ne sarei influenzato, ma lo fanno sia le ultime community che le edizioni enterprise.
Tomas Gerulaitis,

Sembra che magento abbia risposto a questa domanda devdocs.magento.com/guides/m1x/ce19-ee114/…
Icona

Magento ha menzionato se hanno intenzione di risolvere questo problema con la prossima patch?
Icona

1
@Icon Abbiamo riscontrato errori nell'amministratore e nel frontend, perché il problema si stava verificando durante l'inizializzazione della configurazione di Magento.
Tomas Gerulaitis,

8

1.Risolto: problema con la chiave segreta non valido quando un utente carica l'amministratore

In queste patch, Magento non visualizza più il file “Invalid Secret Key. Please refresh the page.” message when a user loads the Admin.

Modificando il codice in

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

rigorosa tutta la password del cliente per lunghezza MAX 256:

Sappiamo già che la lunghezza minima della password magento 1.x è 6 .

ma in questa patch magento è limite di lunghezza massima a 256.

In questo caso, magento ha apportato modifiche alla funzione della classe del modellovalidate() del cliente . Quindi, se qualcuno ha sovrascritto la classe e ha anche la precedenza, dovrebbero aggiungere il codice sotto suthat 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);
}

Aggiungi $this->escapeHtml()e Mage :: helper ('core') -> quoteEscape () per alcuni file in cui è possibile un attacco XSS

Se qualcuno sovrascrive questi file, è necessario aggiungere il codice seguente per recuperare la classe di overrider 1.app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php

sostituire

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

con

$ this -> _ headerText = Mage :: helper ('reports') -> __ ('Recensioni per% s', $ this-> escapeHtml ($ product-> getName ()));

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

sostituire

$ this -> _ headerText = Mage :: helper ('reports') -> __ ('Tag inviati a% s', $ product-> getName ());

con

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

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

sostituire

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

con

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

  1. La fatturazione della vista dell'ordine cliente è d'accordo: app / design / adminhtml / impostazione predefinita / impostazione predefinita / modello / vendite / fatturazione / accordo / vista / scheda / info.phtml

sostituire

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

con

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

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

sostituire

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

con

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

sostituire

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

con

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


4
Grazie @Amit ho perso "Risolto: problema con la chiave segreta non valido" nel mio messaggio :). +1
Rama Chandran M

1
benvenuto:) ... hai fatto un buon lavoro su questa domanda
Amit Bera

7

Se hai già applicato SUPEE-10358 ^ o patchato manualmente app/code/core/Mage/Adminhtml/Controller/Action.phpper il problema " Chiave segreta non valida ", dovrai eliminare manualmente quella sezione dal file 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() );

Inoltre, se hai già corretto l' errore di battitura " new-pawwsord " (introdotto in SUPEE-10266), app/design/adminhtml/default/default/template/backup/dialogs.phtmlelimina anche quella sezione dalla patch:

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 ha fornito SUPEE-10358 in risposta a un ticket di supporto EE relativo al problema InvalidSecretKey


5

Problema: la patch non funziona su Vanilla 1.9.1.1

Modifica 1: correzione aggiunta di seguito.

Modifica 2: la mia correzione non è più necessaria, Magento ha fornito SUPEE-10497 che risolve questo 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

Il Magento vaniglia 1.9.1.1 è stato scaricato da https://github.com/OpenMage/magento-mirror/archive/1.9.1.1.tar.gz

Patch precedentemente applicate su questo 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

Correzione ufficiale per la patch SUPEE-10415 per 1.9.1.1:

  • Se hai installato SUPEE-10266:
    ripristinalo utilizzando: ./PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh --revert
  • Se installato SUPEE-10415:
    ripristinarlo utilizzando ./PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh --revert
  • Ora applica SUPEE-10497

Correzione manuale per patch SUPEE-10415 per 1.9.1.1 [obsoleto]:

Modifica il file PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh, sostituisci le righe 445-447 .

Vecchio:

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

Nuovo:

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

Sto vivendo anche questo. Sembra essere un problema con app/code/core/Mage/Core/Model/File/Validator/Image.php. La patch SUPEE-10415 non sembra prendere in considerazione la modifica apportata dalla patch SUPEE-9767 (v1 o v2)
wr125

1
Correzione aggiunta in fondo alla mia risposta.
Jeroen Vermeulen - MageHost

1
Non sono d'accordo Abbiamo preso un'installazione vanilla da github.com/OpenMage/magento-mirror/archive/1.9.2.2.tar.gz e siamo riusciti ad applicare le patch in questo ordine: 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,

1
Devi applicare tutte le patch precedenti, vedi il mio commento precedente. L'ho provato.
Jeroen Vermeulen - MageHost

4
Si prega di usare SUPEE-10497 invece, è stato appena rilasciato per risolvere questo problema in 1.9.1.1. Leggere le note di rilascio poiché questa patch richiede la rimozione di SUPEE-10266 prima dell'installazione.
Piotr Kaminski,

3

Ecco il registro delle modifiche completo e quello che ho capito con questo log delle modifiche

E quali file sono stati interessati dalla causa elencata di seguito

Esci dal cambio HTML

file

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

Aggiungi DS invece '/'

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

nuovo file aggiunto

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

File di modifica completo

app / code / core / Mage / Adminhtml / modello / sistema / 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;
 }

Aggiunto metodo getCacheId () e getServiceUrl ()

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

Aggiunto metodo unserialize ()

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

Usa il metodo getServiceUrl () creato in 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

Usa il metodo getCacheId () creato in app / code / core / Mage / Api / Helper / Data.php

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

Usato sopra unserialize()metodo creato in 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

Modifica commento

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

Commento aggiunto

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

Aggiunta la lunghezza massima della password

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

Aggiunto estensione file consentita // $ _ allowedFileExtensions = array ('log', 'txt', 'html', 'csv');

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

Non so quale cambiamento

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

Elenco dei problemi

SUPEE-10415 impedisce il controllo del cestino

ottieni il codice di errore # 10415 in paypal in magento


1

Tentare questo su Magento EE 1.13.0.2 e sembra che questa patch non funzioni bene se è installato 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 ha cambiato la riga con $phpAuthUserin

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

Non solo la $phpAuthUserlinea era diversa dalla spaziatura precedente, ma ->setUseSession(false);era anche errata
DanCarlyon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.