Correctif de sécurité SUPEE-10415 - Problèmes possibles?

37

Le nouveau correctif Magento 1, SUPEE-10415 , a été publié .

Ce correctif offre une protection contre plusieurs types de problèmes liés à la sécurité.

Page d'informations: https://magento.com/security/patches/supee-10415
Page de téléchargement: https://magento.com/tech-resources/download

Quels sont les problèmes possibles à surveiller?

Veuillez également partager tous les bugs et problèmes que vous avez trouvés après l'installation du correctif.


  • Problème avec l'application de SUPEE-10415 sur vanilla 1.9.1.1 , les shows ne peuvent pas être appliqués à cause d'un message d'erreur de morceau dans Image.php . EDIT: À compter du 7 décembre 2017, le correctif est fourni dans le SUPEE-10497.

  • 8788 versions 2 doivent être installées, sinon les erreurs "Type de données non pris en charge" s'afficheront. Plus d'informations.

  • Erreur "404: page introuvable" dans le répertoire errors / après la mise à niveau vers SUPEE-10415. Ce problème se produit uniquement dans les installations Magento exécutant certaines extensions tierces.
    Solution: confirmez qu'aucun avertissement PHP n'est généré par les extensions ou les personnalisations.
Icône
la source
5
Déployé sans aucun problème sur Magento 1.9.2.4CE ici - la plupart des modifications semblent être l’assainissement des variables dans l’administrateur, en particulier la sauvegarde des fichiers de log. Il semble y avoir quelques changements à l’API soap en termes de désinfection. Les critiques sont également désinfectées dans la zone d'administration. Il peut donc y avoir une possibilité d'exploiter un code malveillant dans une critique sur mo (spéculative)
Ricky Odin Matthews
2
Déployé sur Magento 1.9.3.0 CE pas de problème ici. Le correctif précédant 10266 est requis si vous ne l'avez pas déjà appliqué.
danmentzer
1
Le 1.9.1.0 - dans les "Règles de tarification du panier", le correctif provoque une défaillance - règle de la vue d'erreur erronée - entrée du journal - a: 5: {i: 0; s: 23: "Type de données non pris en charge N"; i: 1; s: 1464: "# 0 /opt/bitnami/apps/magento/htdocs/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue-> lire ('N', ';')) ---- correction de la correction des correctifs, donc quelque chose dans SUPEE-10415
Laith
1
Je n’ai pas la réputation d’envoyer une réponse, mais vous ne pouvez pas passer à Magento 1.9.3.7, puis utiliser Git pour fusionner avec ce correctif: la constante MAXIMUM_PASSWORD_LENGTH est ajoutée deux fois si vous utilisez le comportement par défaut de Git (aucune idée s’il existe). paramètres qui sont des solutions de contournement pour cela).
toon81
1
Pour les problèmes 1.9.1.1: Veuillez utiliser SUPEE-10497 à la place, il a été publié récemment pour résoudre ce problème sur 1.9.1.1. Veuillez lire les notes sur l'édition car ce correctif nécessite la suppression de SUPEE-10266 avant l'installation.
Piotr Kaminski

Réponses:

26

Les fichiers ci-dessous sont mis à jour / ajoutés après l’application du correctif 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

Quelques points importants:

1) Extensions de fichiers autorisées: log, txt, html, csv. archiver ci-dessous les fichiers

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 longueur maximale du mot de passe est de 256 caractères et le contrôle de validation dans le app/code/core/Mage/Customer/Model/Customer.phpfichier

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

Pour EE Edition Ajouté quatre fichiers supplémentaires

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

Quelques points en EE

Ajout d'une condition dans les fichiers ci-dessous

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

Veuillez mettre à jour la condition ci-dessous dans vos fichiers de thème.

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

Pour plus d'informations:

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
la source
Après avoir appliqué SUPEE-10415, erreur 404 à la fois en bout de ligne et en bout de ligne, comment puis-je résoudre ce problème? magento.stackexchange.com/q/215620/57334
partir du
Pouvez-vous créer un ticket séparé et expliquer avec le journal des erreurs et Ajouter un commentaire, je vais vous aider. ce problème en raison de .htaccess ou remplacez le module en local.
Rama Chandran M
20

SUPEE-10415 ...

  1. Résout certains problèmes XSS du panneau d'administration dans les domaines suivants:

    • Rapport de revues de produits
    • Rapport d'étiquettes de produit
    • Commentaires sur le produit ajouter / modifier l'interface
    • Accords de facturation
    • Onglet Editeur de contenu xmlconnect
    • Règles sérialisées
  2. Limite les extensions de fichier pouvant être utilisées pour le système et les fichiers journaux d'exceptions. Extensions de fichier autorisées: .log, .txt, .html,.csv

  3. Place une limite supérieure de 256 caractères sur les mots de passe du compte client. Ce changement particulier est ridicule. Je ne sais pas d'où ils ont eu cette brillante idée.

Aucune de ces modifications ne semble être une rupture massive ou des modifications incompatibles avec les versions antérieures, à l'exception peut-être de la restriction de la longueur du mot de passe du client.

t-richards
la source
9
La longueur de 256 mots de passe est en fait un bogue dans Magento non corrigé, car le champ du mot de passe de la base de données se trouve dans customer_entity_varchar.value, qui est maxlength = 255. Ne pas savoir ce qui se passe sans correctif si vous essayez de définir une valeur supérieure à 255 provoque probablement un problème.
Ricky Odin Matthews Le
12
Vous avez raison; customer_entity_varchar.value a une taille de colonne limitée. Cependant, ce n'est pas un bug car le mot de passe n'est pas stocké dans cette colonne. Le mot de passe salé et haché est stocké ici. Cette valeur aura toujours une longueur fixe, quelle que soit la taille du mot de passe d'origine. Avant ce correctif, il n'y aurait eu absolument aucun problème pour entrer un mot de passe de plus de 255 caractères.
t-richards
3
Je suppose que le changement de longueur du mot de passe a quelque chose à voir avec APPSEC-1330. magento.com/security/patches/supee-10415
objet
7
Peut-être que c'est leur pensée, Rob: stackoverflow.com/a/98857/8199523
RickyMage123
1
@ t-richards excellent point, vous êtes juste là. Pourquoi pensiez-vous qu'ils le feraient? Je pense que peut-être que le hachage d'un mot de passe long pourrait causer un problème de DoS en termes d'utilisation du processeur, un mot de passe plus long nécessite plus de ressources CPU / mémoire en PHP à hachage?
Ricky Odin Matthews
12

SUPEE 10415 Nécessite le correctif 8788 v2

J'ai rencontré la même erreur qu'un message précédent, mais il semble avoir été supprimé.

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

J'ai rencontré l'erreur ci-dessus lorsque j'ai installé le nouveau correctif sur M 1.8.00 CE. La cause spécifique semble être due au fait que le correctif v2 de 8788 corrige manuellement la plupart des problèmes de ce correctif, mais nous avons oublié les parties non sérialisées.

Au lieu de revenir sur le correctif, j'ai apporté les modifications manuellement et le site fonctionne maintenant correctement.

Vous trouverez ci-dessous le code du correctif 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;
+    }
+}

Vous pouvez également en savoir plus sur l'erreur de cet article . SOLVED: la nouvelle classe Unserialize_Parser lève des exceptions sur les valeurs NULL

danmentzer
la source
aha! bon point, 8788 V2 est nécessaire pour éviter le problème!
Icône
Pouvez-vous indiquer sur quelles pages de votre site Web avez-vous détecté des erreurs "Type de données non pris en charge"? Essayer de répliquer.
Icône
J'ai été en mesure de le déclencher sur la page de catégorie, la page de produit et le panier lorsqu'un produit était dans le panier.
danmentzer
@danmentzer comment puis-je résoudre l'erreur, revenez au correctif patch 9767 v1 :: erreur: justpaste.it/1e9pn
zus
@zus Je viens de voir votre message. Avez-vous eu cette idée de l'apparence de votre pâte? Je me permettrais de deviner trois raisons possibles de votre erreur. 1. Vous avez la mauvaise version du correctif (c'est la moins probable) 2. Votre correctif n'est déjà pas appliqué. 3. Peut-être avez-vous corrigé manuellement certains de ces problèmes et le correctif ne vous convient pas. Désolé si ce n'est pas utile
danmentzer
11

Nous avons eu un problème avec ce correctif: toutes les pages du site ont commencé à afficher l'erreur "404: page introuvable" du errors/répertoire. Après un peu de fouille, il s’avère que cela a été causé par un avertissement PHP publié dans Mage_Core_Model_App::init, qui provoque alors un Mage_Core_Model_Store_Exceptiondans les lignes suivantes du correctif:

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 avertissement PHP survient avant l'initialisation des magasins
  2. L'avertissement est capté par mageCoreErrorHandler(), qui appelle Mage::log()pour enregistrer le message dans le fichier journal.
  3. Mage::log() appels Mage::helper('log')
  4. Mage_Log_Helper_Data::__constructappels Mage::getStoreConfig(), quels appels Mage::app()->getStore(), mais les magasins n’ont pas encore été initialisés et un Mage_Core_Model_Store_Exceptionest lancé
  5. app/Mage.php:647 attrape l'exception et retourne une page 404

Je ne sais pas trop quelle est la solution pour l'instant, mis à part la résolution de l'avertissement et / ou la capture de l'exception lors de la vérification de l'extension du fichier journal. Je vais signaler cela à Magento pour voir ce qu’ils pensent.

Tomas Gerulaitis
la source
quelle version utilisez-vous?
Icône
1
@Icon 1.9.3.6. J'ai remarqué que certains de nos projets les moins récents n'avaient pas de __construct()méthode Mage_Log_Helper_Dataet ne seraient donc pas affectés par cela, mais les dernières éditions pour les entreprises et pour les entreprises le sont.
Tomas Gerulaitis
On dirait que magento a répondu à cette question devdocs.magento.com/guides/m1x/ce19-ee114/…
Icône
Magento a-t-il indiqué s'ils envisageaient de résoudre ce problème avec le prochain correctif?
Icône
1
@Icon Nous avons constaté des erreurs tant dans l'administration que dans l'interface utilisateur, car le problème se produisait lors de l'initialisation de la configuration de Magento.
Tomas Gerulaitis
8

1. Résolu: problème de clé secrète non valide quand un utilisateur charge l'administrateur

Dans ces patchs, Magento n'affiche plus le “Invalid Secret Key. Please refresh the page.” message when a user loads the Admin.

En changeant de code à

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

strict tout mot de passe client à la longueur max 256:

Nous savons déjà que la longueur minimale du mot de passe magento 1.x est 6 .

mais dans ce patch, magento a une longueur maximale de 256.

Dans ce cas, magento a apporté des modifications en fonction de la classe de modèlesvalidate() du Client . Ainsi, si quelqu'un a remplacé la classe et modifié, il doit ajouter le code ci-dessous surthat 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);
}

Ajouter $this->escapeHtml()et Mage :: helper ('core') -> quoteEscape () pour certains fichiers où une attaque XSS est possible

Si quelqu'un substitue ces fichiers, vous devez ajouter le code ci-dessous à repeciev pour remplacer la classe 1.app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php.

remplacer

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

avec

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

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

remplacer

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

avec

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

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

remplacer

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

avec

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

  1. Accord de facturation de la vue de la commande client: app / design / adminhtml / default / default / template / sales / billing / agreement / view / tab / info.phtml

remplacer

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

avec

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

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

remplacer

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

avec

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

remplacer

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

avec

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

Amit Bera
la source
4
Merci @Amit j'ai raté le message "Résolu: problème de clé secrète non valide" dans mes ans :). +1
Rama Chandran M
1
vous êtes le bienvenu:) ... vous avez fait du bon travail sur cette question
Amit Bera
7

Si vous avez déjà appliqué SUPEE-10358 ^ ou corrigé manuellement app/code/core/Mage/Adminhtml/Controller/Action.phple problème " Clé secrète invalide ", vous devez supprimer manuellement cette section du fichier de correctif:

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

De plus, si vous avez déjà corrigé la typo " new-pawwsord " (introduite dans SUPEE-10266) dans, app/design/adminhtml/default/default/template/backup/dialogs.phtmlsupprimez également cette section du correctif:

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 a fourni le SUPEE-10358 en réponse à un ticket d'assistance EE concernant le problème InvalidSecretKey

kmdsax
la source
5

Problème: le correctif ne fonctionne pas sur la vanille 1.9.1.1

Edition 1: correction ajoutée ci-dessous.

Edit 2: mon correctif n'est plus nécessaire, Magento a fourni SUPEE-10497 qui résout ce problème.

Problème:

# 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

La vanille Magento 1.9.1.1 a été téléchargée à partir de https://github.com/OpenMage/magento-mirror/archive/1.9.1.1.tar.gz

Correctifs précédemment appliqués à ce 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

Correctif officiel pour le correctif SUPEE-10415 pour 1.9.1.1:

  • Si vous avez installé SUPEE-10266:
    Rétablissez-le en utilisant: ./PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh --revert
  • Si vous avez installé SUPEE-10415:
    Rétablissez-le en utilisant ./PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh --revert
  • Maintenant, appliquez SUPEE-10497

Correctif manuel pour le correctif SUPEE-10415 pour 1.9.1.1 [obsolète]:

Editez le fichier PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh, remplacez les lignes 445- 447.

Vieux:

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

Nouveau:

         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
Jeroen Vermeulen - MageHost
la source
Je vis aussi cela. Semble être un problème avec app/code/core/Mage/Core/Model/File/Validator/Image.php. Le correctif SUPEE-10415 ne semble pas prendre en compte la modification apportée par le correctif SUPEE-9767 (v1 ou v2)
wr125
1
Correction ajoutée au bas de ma réponse.
Jeroen Vermeulen - MageHost Le
1
Je ne suis pas d'accord Nous avons pris une installation vanilla à l' adresse github.com/OpenMage/magento-mirror/archive/1.9.2.2.tar.gz et avons pu appliquer les correctifs dans cet ordre: 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
Vous devez appliquer tous les correctifs précédents, voir mon commentaire précédent. Je l'ai testé.
Commentaires
4
Veuillez utiliser SUPEE-10497 à la place, il a été publié récemment pour résoudre ce problème sur 1.9.1.1. Veuillez lire les notes sur l'édition car ce correctif nécessite la suppression de SUPEE-10266 avant l'installation.
Piotr Kaminski
3

Voici le journal des modifications complet et ce que je comprends de ce changelog

Et quels fichiers ont été affectés par quelle cause est énumérée ci-dessous

Échapper au changement HTML

fichier

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

Ajouter DS à la place '/'

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

nouveau fichier ajouté

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

Fichier de modification complet

app / code / core / Mage / Adminhtml / Modèle / Système / Config / Backend / Nom du fichier.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;
 }

Méthode ajoutée getCacheId () et getServiceUrl ()

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

Méthode ajoutée unserialize ()

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

Utilisez la méthode getServiceUrl () créée dans 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

Utilisez la méthode getCacheId () créée dans app / code / core / Mage / Api / Helper / Data.php

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

unserialize()Méthode ci-dessus utilisée créée dans 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

Changement de commentaire

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

Commentaire ajouté

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

Longueur de mot de passe maximale ajoutée

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

Ajout de l'extension de fichier autorisée // $ _ allowedFileExtensions = array ('log', 'txt', 'html', 'csv');

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

Je ne sais pas quel changement

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

Liste des problèmes

SUPEE-10415 empêche le contrôle du panier

obtenez le code d'erreur de # 10415 dans paypal dans magento

Murtuza Zabuawala
la source
1

Essayez ceci sur Magento EE 1.13.0.2 et il semble que ce correctif ne soit pas bien joué si SUPEE-6482 est installé.

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 a changé la ligne avec $phpAuthUserla

$phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
DanCarlyon
la source
Non seulement la $phpAuthUserligne était différente de l'espacement précédent, mais elle ->setUseSession(false);était également incorrecte
DanCarlyon