Sicherheitspatch SUPEE-10415 - Mögliche Probleme?


37

Der neue Magento 1-Patch SUPEE-10415 wurde veröffentlicht .

Dieser Patch bietet Schutz vor verschiedenen Arten von Sicherheitsproblemen

Infoseite: https://magento.com/security/patches/supee-10415
Download-Seite: https://magento.com/tech-resources/download

Was sind die möglichen Probleme zu beachten?

Bitte teilen Sie auch alle Fehler und Probleme mit, die Sie nach der Patch-Installation gefunden haben.


  • Problem beim Anwenden von SUPEE-10415 auf Vanille 1.9.1.1 , Shows können nicht angewendet werden, da eine große Fehlermeldung bei Image.php vorliegt . BEARBEITEN: Ab dem 7. Dezember 2017 ist ein Update in SUPEE-10497 verfügbar

  • Muss 8788 Version 2 installiert haben, andernfalls werden Fehler vom Typ "Nicht unterstützter Datentyp" angezeigt. Mehr Info.

  • Fehler "404: Seite nicht gefunden" aus dem Verzeichnis " errors /" nach dem Upgrade auf SUPEE-10415. Dieses Problem tritt nur bei Magento-Installationen auf, auf denen bestimmte Erweiterungen von Drittanbietern ausgeführt werden.
    Problemumgehung: Stellen Sie sicher, dass keine PHP-Warnungen von einer der Erweiterungen oder Anpassungen generiert werden.

5
Wird hier ohne Probleme unter Magento 1.9.2.4CE bereitgestellt - die meisten Änderungen scheinen die Bereinigung von Variablen in admin zu sein, insbesondere das Speichern von Protokolldateien. Es scheint ein paar Änderungen an der Seifen-API zu geben, auch im Hinblick auf die Desinfektion. Überprüfungen werden auch im Admin-Bereich bereinigt, so dass es einen möglichen Exploit gibt, bei dem böswilliger Code in eine Überprüfung am Montag (spekulativ)
Ricky Odin Matthews

2
Bereitgestellt auf Magento 1.9.3.0 CE hier keine Probleme. Der Patch vor 10266 ist erforderlich, wenn Sie diesen Patch noch nicht installiert haben.
Danmentzer

1
Auf 1.9.1.0 - in den "Warenkorb-Preisregeln" verursacht der Patch einen Fehler - schwerer Fehler beim Anzeigen der Regel - Protokolleintrag -a: 5: {i: 0; s: 23: "Nicht unterstützter Datentyp N"; i: 1; s: 1464: "# 0 /opt/bitnami/apps/magento/htdocs/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue-> read ('N', ';') ---- Patch-Umkehrung behoben, so dass es etwas in SUPEE-10415
Laith

1
Ich habe nicht den Ruf, eine Antwort zu posten, aber Sie können nicht auf Magento 1.9.3.7 upgraden und dann Git zum Zusammenführen mit diesem Patch verwenden: Die Konstante MAXIMUM_PASSWORD_LENGTH wird zweimal hinzugefügt, wenn Sie das Standardverhalten von Git verwenden (keine Ahnung, ob es welche gibt) Einstellungen, die Workarounds dafür sind).
Toon81

1
Für 1.9.1.1-Probleme: Verwenden Sie stattdessen SUPEE-10497, das erst kürzlich veröffentlicht wurde, um dieses Problem in 1.9.1.1 zu beheben. Bitte lesen Sie die Versionshinweise, da für diesen Patch SUPEE-10266 vor der Installation entfernt werden muss.
Piotr Kaminski

Antworten:


26

Die folgenden Dateien werden nach dem Patch SUPEE - 10415 aktualisiert / hinzugefügt .

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

Einige wichtige Punkte:

1) Zulässige Dateierweiterungen: log, txt, html, csv. Checken Sie die folgenden Dateien ein

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) Die maximal festgelegte Kennwortlänge beträgt 256 Zeichen, und die Überprüfungsdatei ist app/code/core/Mage/Customer/Model/Customer.phpeingecheckt

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

Für die EE Edition wurden weitere vier Dateien hinzugefügt

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

Einige wichtige Punkte in EE

In den folgenden Dateien wurde eine Bedingung hinzugefügt

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

Bitte aktualisieren Sie die folgende Bedingung in Ihren Themendateien.

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

Für mehr Informationen:

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


Wie kann ich das Problem lösen, nachdem SUPEE-10415, Front-End- und Back-End-Fehler 404 erhalten haben? magento.stackexchange.com/q/215620/57334
zus

Können Sie ein separates Ticket erstellen und mit Fehlerprotokoll erklären und einen Kommentar hinzufügen, ich werde Ihnen helfen. Dieses Problem aufgrund von .htaccess oder überschreiben Sie das Modul in local.
Rama Chandran M


20

SUPEE-10415 ...

  1. Behebt einige XSS-Probleme im Admin-Panel in den folgenden Bereichen:

    • Bericht über Produktbewertungen
    • Bericht über Produkt-Tags
    • Produktbewertungen Schnittstelle hinzufügen / bearbeiten
    • Abrechnungsvereinbarungen
    • Registerkarte "xmlconnect-Inhaltseditor"
    • Serialisierte Regeln
  2. Beschränkt die Dateierweiterungen, die für die System- und Ausnahmeprotokolldateien verwendet werden können. Erlaubte Dateiendungen: .log, .txt, .html,.csv

  3. Setzt eine Obergrenze von 256 Zeichen für die Passwörter von Kundenkonten. Diese besondere Veränderung ist lächerlich; Ich bin mir nicht sicher, woher sie diese gute Idee haben.

Keine dieser Änderungen scheint massiv zu stören oder rückwärtskompatibel zu sein, außer vielleicht wegen der Beschränkung der Länge des Kundenkennworts.


9
Die Länge von 256 Passwörtern ist tatsächlich ein Fehler in nicht gepatchtem Magento, da sich das Datenbank-Passwortfeld in customer_entity_varchar.value befindet, das maxlength = 255 ist. Unsicher, was ohne Patch passiert, wenn Sie versuchen, länger als 255 einzustellen, verursacht wahrscheinlich jedoch ein Problem.
Ricky Odin Matthews

12
Du hast Recht; customer_entity_varchar.value hat eine begrenzte Spaltengröße. Es ist jedoch kein Fehler, da das Kennwort nicht in dieser Spalte gespeichert ist. Das gesalzene und gehashte Passwort wird dort gespeichert. Dieser Wert hat unabhängig von der Größe des ursprünglichen Kennworts immer eine feste Länge. Vor diesem Patch gab es absolut keine Probleme, ein Passwort mit mehr als 255 Zeichen einzugeben.
t-richards

3
Ich gehe davon aus, dass die Änderung der Kennwortlänge etwas mit APPSEC-1330 zu tun hat. magento.com/security/patches/supee-10415
quasiobject 28.11.17

7
Vielleicht ist dies ihr Denken, Rob: stackoverflow.com/a/98857/8199523
RickyMage123

1
@ t-richards toller Punkt, du bist genau dort. Warum haben Sie gedacht, dass sie es tun würden? Ich denke, ein langes Passwort könnte ein DoS-Problem in Bezug auf die CPU-Auslastung verursachen. Sicherlich benötigt ein längeres Passwort mehr CPU / Speicher in PHP für das Hashing?
Ricky Odin Matthews

12

SUPEE 10415 Benötigt 8788 v2 Patch

Ich habe den gleichen Fehler wie in einem vorherigen Beitrag festgestellt, aber er scheint beseitigt worden zu sein.

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

Ich habe den oben genannten Fehler festgestellt, als ich den neuen Patch auf M 1.8.00 CE installiert habe. Die spezifische Ursache scheint darin zu liegen, dass wir mit dem v2-Patch von 8788 für die meisten Probleme manuelle Korrekturen vorgenommen haben, aber die Teile der Deserialisierung fehlten.

Anstatt den Patch zurückzusetzen, habe ich die Änderungen manuell vorgenommen und jetzt funktioniert die Site ordnungsgemäß.

Unten finden Sie den Code für den 8788-Patch

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

Sie können auch mehr über den Fehler in diesem Beitrag lesen. Gelöst: Neue Unserialize_Parser-Klasse wirft Ausnahmen auf NULL-Werte


Aha! guter Punkt, 8788 V2 ist erforderlich, um das Problem zu verhindern!
Icon

Können Sie bitte mitteilen, auf welchen Seiten Ihrer Website Fehler vom Typ "Nicht unterstützter Datentyp" aufgetreten sind? Ich versuche zu replizieren.
Icon

Ich konnte es auf der Kategorieseite und der Produktseite und dem Warenkorb auslösen, während sich ein Produkt im Warenkorb befand.
Danmentzer

@ danmentzer wie kann ich den fehler beheben, patch 9767 v1 zurücksetzen
zus

@zus Ich habe gerade deinen Beitrag gesehen. Hast du das anhand des Aussehens deiner Paste herausgefunden? Ich würde drei verschiedene mögliche Gründe für deinen Fehler erraten. 1. Sie haben die falsche Patch-Version (dies ist die unwahrscheinlichste). 2. Ihr Patch ist bereits nicht installiert. 3. Vielleicht haben Sie einige dieser Probleme manuell behoben, und der Patch gefällt nicht, wie Sie es getan haben. Entschuldigung, wenn dies nicht hilfreich ist
danmentzer

11

Wir hatten ein Problem mit diesem Patch, bei dem auf jeder Seite der Website der Fehler "404: Seite nicht gefunden" aus dem errors/Verzeichnis angezeigt wurde. Nach ein wenig Ausgraben stellt sich heraus, dass es durch eine PHP-Warnung in verursacht wurde Mage_Core_Model_App::init, die dann Mage_Core_Model_Store_Exceptionin den folgenden Zeilen aus dem Patch ein hervorruft :

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. Eine PHP-Warnung wird ausgegeben, bevor die Stores initialisiert wurden
  2. Die Warnung wird von aufgenommen mageCoreErrorHandler(), der Mage::log()die Nachricht in die Protokolldatei aufruft .
  3. Mage::log() Anrufe Mage::helper('log')
  4. Mage_Log_Helper_Data::__constructAnrufe Mage::getStoreConfig(), der anruft Mage::app()->getStore(), aber die Speicher wurden noch nicht initialisiert und ein Mage_Core_Model_Store_Exceptionwird geworfen
  5. app/Mage.php:647 fängt die Ausnahme ab und gibt eine 404-Seite zurück

Ich bin mir noch nicht sicher, was die Lösung ist, außer die Warnung zu beheben und / oder die Ausnahme beim Überprüfen der Protokolldateierweiterung abzufangen. Ich werde dies Magento melden, um zu sehen, was sie denken.


welche version benutzt du
Icon

1
@Icon 1.9.3.6. Mir ist aufgefallen, dass einige unserer weniger aktuellen Projekte nicht über diese __construct()Methode verfügen Mage_Log_Helper_Dataund daher nicht davon betroffen sind, aber sowohl die neuesten Community- als auch die Enterprise-Editionen.
Tomas Gerulaitis

Anscheinend hat Magento diese Frage beantwortet. Devdocs.magento.com/guides/m1x/ce19-ee114/…
Icon

Hat Magento erwähnt, ob das Problem mit dem nächsten Patch behoben werden soll?
Icon

1
@Icon Wir haben sowohl im Admin als auch im Frontend Fehler festgestellt, da das Problem bei der Initialisierung der Magento-Konfiguration auftrat.
Tomas Gerulaitis

8

1. Behoben: Ungültiges Problem mit dem geheimen Schlüssel, wenn ein Benutzer den Administrator lädt

In diesen Patches zeigt Magento das nicht mehr an “Invalid Secret Key. Please refresh the page.” message when a user loads the Admin.

Indem Sie den Code unter ändern

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

Streng alle Kunden Passwort bis zur Länge von max. 256:

Wir wissen bereits, dass das Passwort für magento 1.x mindestens 6 ist .

In diesem Patch ist die maximale Länge von Magento auf 256 begrenzt.

Dieser Fall hat magento done Änderungen an Funktion validate() von Kundenmodellklasse .So, wenn jemand die Klasse überschreiben und auch außer Kraft setzen , dann sollten sie unter Code hinzufügen aufthat 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()und Mage :: helper ('core') -> quoteEscape () für einige Dateien, bei denen ein XSS-Angriff möglich ist

Wenn jemand diese Dateien überschreibt, sollten Sie den folgenden Code hinzufügen, um die Überschreiberklasse 1.app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php zu ersetzen

ersetzen

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

mit

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

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

ersetzen

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

mit

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

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

ersetzen

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

mit

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

  1. Abrechnungsvereinbarung für die Ansicht von Kundenaufträgen: App / Design / Adminhtml / Standard / Standard / Vorlage / Verkauf / Abrechnung / Vereinbarung / Ansicht / Tab / info.phtml

ersetzen

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

mit

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

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

ersetzen

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

mit

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

ersetzen

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

mit

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


4
Thanks @Amit Ich habe "Resolved: Invalid Secret Key issue" in meinem Ans verpasst :). +1
Rama Chandran M

1
Sie begrüßen:) ... Sie haben bei dieser Frage gute Arbeit geleistet
Amit Bera

7

Wenn Sie SUPEE-10358 ^ bereits angewendet oder das Problem app/code/core/Mage/Adminhtml/Controller/Action.php" Invalid Secret Key " manuell behoben haben, müssen Sie diesen Abschnitt manuell aus der Patch-Datei löschen:

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

Wenn Sie den in SUPEE-10266 eingeführten Tippfehler " new-pawwsord " bereits behoben haben, app/design/adminhtml/default/default/template/backup/dialogs.phtmllöschen Sie diesen Abschnitt auch aus dem 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 hat SUPEE-10358 als Antwort auf ein EE-Support-Ticket für das InvalidSecretKey-Problem bereitgestellt


5

Problem: Patch funktioniert nicht unter Vanilla 1.9.1.1

Edit 1: Update unten hinzugefügt.

Edit 2: Mein Fix wird nicht mehr benötigt, Magento hat SUPEE-10497 bereitgestellt, das dieses Problem behebt.

Problem:

# 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

Das Vanille Magento 1.9.1.1 wurde von https://github.com/OpenMage/magento-mirror/archive/1.9.1.1.tar.gz heruntergeladen

Zuvor auf Magento 1.9.1.1 angewendete Patches:

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

Offizieller Fix für den SUPEE-10415-Patch für 1.9.1.1:

  • Wenn Sie installiert haben SUPEE-10266: Setzen Sie
    es zurück mit: ./PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh --revert
  • Wenn Sie installiert haben SUPEE-10415: Setzen Sie
    es mit zurück ./PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh --revert
  • Tragen Sie nun SUPEE-10497 auf

Manuelle Korrektur für den SUPEE-10415-Patch für 1.9.1.1 [veraltet]:

Bearbeiten Sie die Datei PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh, ersetzen Sie die Zeilen 445- 447.

Alt:

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

Neu:

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

Das erlebe ich auch. Scheint ein Problem mit zu sein app/code/core/Mage/Core/Model/File/Validator/Image.php. Patch SUPEE-10415 scheint die von Patch SUPEE-9767 (v1 oder v2)
wr125,

1
Fix am Ende meiner Antwort hinzugefügt.
Jeroen Vermeulen - MageHost

1
Ich stimme nicht zu. Wir haben eine Vanille-Installation von github.com/OpenMage/magento-mirror/archive/1.9.2.2.tar.gz durchgeführt und konnten Patches in der folgenden Reihenfolge anwenden: 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
Sie müssen alle vorherigen Patches anwenden, siehe meinen vorherigen Kommentar. Ich habe es getestet.
Jeroen Vermeulen - MageHost

4
Verwenden Sie stattdessen SUPEE-10497, das erst kürzlich veröffentlicht wurde, um dieses Problem in 1.9.1.1 zu beheben. Bitte lesen Sie die Versionshinweise, da für diesen Patch SUPEE-10266 vor der Installation entfernt werden muss.
Piotr Kaminski

3

Hier ist das komplette Änderungsprotokoll und was ich mit diesem Änderungsprotokoll verstehe

Und welche Dateien von welcher Ursache betroffen waren, ist unten aufgeführt

Escape-HTML-Änderung

Datei

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

DS statt '/' hinzufügen

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

neue Datei hinzugefügt

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

Komplette Änderungsdatei

app / code / core / Mage / Adminhtml / Model / System / Config / Backend / Dateiname.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;
 }

Methode getCacheId () und getServiceUrl () hinzugefügt

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

Methode unserialize () hinzugefügt

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

Verwenden Sie die Methode getServiceUrl (), die in app / code / core / Mage / Api / Helper / Data.php erstellt wurde

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

Verwenden Sie die Methode getCacheId (), die in app / code / core / Mage / Api / Helper / Data.php erstellt wurde

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

Verwendet die obige unserialize()Methode, die in app / code / core / Mage / Core / Helper / String.php erstellt wurde

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

Kommentaränderung

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

Kommentar hinzugefügt

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

Maximale Passwortlänge hinzugefügt

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

Erlaube Dateierweiterung hinzugefügt // $ _ allowedFileExtensions = array ('log', 'txt', 'html', 'csv');

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

Ich weiß nicht, was sich ändert

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

Issue-Liste

SUPEE-10415 verhindert die Korbkontrolle

erhalte den fehlercode # 10415 in paypal in magento


1

Wenn Sie dies unter Magento EE 1.13.0.2 versuchen und es scheint, dass dieser Patch nicht gut funktioniert, wenn SUPEE-6482 installiert ist.

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 hat die Zeile mit $phpAuthUserzu geändert

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

Nicht nur $phpAuthUserder Abstand zwischen den Zeilen ->setUseSession(false);war falsch
DanCarlyon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.