Magento 1.9.2.1 SUPEE-7405-Administrator funktioniert nicht

8

Ich habe heute den neuen Patch - SUPEE-7405 per FTP von dieser Seite installiert.

https://magentary.com/kb/install-supee-7405-without-ssh/

Nun sieht es so aus, als ob mein Front-End-Speicher noch funktioniert. Wenn ich mich jedoch bei / admin anmelde, werde ich zur Anmelde- / Kennwortseite weitergeleitet. Sobald ich mich anmelde, wird eine Fehlermeldung angezeigt.

Invalid method Mage_Core_Model_Session::validateFormKey(Array
(
    [0] => y6h9TjgvchV8hCZT
)
)

Trace:
#0 /home/a0cegcom/public_html/app/code/core/Mage/Admin/Model/Observer.php(73): Varien_Object->__call('validateFormKey', Array)
#1 /home/a0cegcom/public_html/app/code/core/Mage/Admin/Model/Observer.php(73): Mage_Core_Model_Session->validateFormKey('y6h9TjgvchV8hCZ...')
#2 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(1357): Mage_Admin_Model_Observer->actionPreDispatchAdmin(Object(Varien_Event_Observer))
#3 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(1336): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Admin_Model_Observer), 'actionPreDispat...', Object(Varien_Event_Observer))
#4 /home/a0cegcom/public_html/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('controller_acti...', Array)
#5 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(527): Mage::dispatchEvent('controller_acti...', Array)
#6 /home/a0cegcom/public_html/app/code/core/Mage/Adminhtml/Controller/Action.php(160): Mage_Core_Controller_Varien_Action->preDispatch()
#7 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(407): Mage_Adminhtml_Controller_Action->preDispatch()
#8 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#9 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#10 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#11 /home/a0cegcom/public_html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#12 /home/a0cegcom/public_html/index.php(88): Mage::run('', 'store')
#13 {main}

irgendwelche Ideen? Ich habe meinen var / cache und var / session bereits ohne Glück gelöscht

MuhuPower
quelle

Antworten:

11

Für mich sieht es so aus, als ob der Patch nicht richtig installiert wurde.

Die validateFormKeyFunktion ist im Patch enthalten.

  • Öffnen Sie die app/code/core/Mage/Core/Model/Session.phpDatei und überprüfen Sie, ob die validateFormKeyFunktion hier ist
  • Wenn die Datei überschrieben wird app/code/local/Mage/Core/Model/Session.php, müssen Sie die neuen Methoden hinzufügen validateFormKeyund renewFormKeymanuell in die überschriebene Datei. Ändern Sie auch Zeile 60 von:

    $this->setData('_form_key', Mage::helper('core')->getRandomString(16));

    zu

    $this->renewFormKey();
  • Wenn es hier ist, ist es definitiv ein Caching- / Kompilierungsproblem. Leeren Sie Ihren Cache sowie jeden anderen Cache (Lack / APC usw.)

  • Wenn Sie die Kompilierung aktiviert haben, deaktivieren Sie die Kompilierung und kompilieren Sie sie erneut.
  • Wenn die Funktion nicht vorhanden ist, bedeutet dies, dass die Dateien nicht ordnungsgemäß hochgeladen wurden. Bitte beachten Sie, dass beim Extrahieren des Archivs aus Magentary die Dateien in einem SUPEE-7405-1.9.2.1-Ordner extrahiert werden. Sie müssen diesen Ordner öffnen und die Dateien aus diesem Ordner in Ihr Magento-Stammverzeichnis extrahieren, um das gesamte SUPEE-7405- zu übertragen. Der Ordner 1.9.2.1 wendet den Patch nicht an.
Raphael beim digitalen Pianismus
quelle
7

Das Nexcess_TurpentineModul überschreibt app/code/core/Mage/Core/Model/Session.phpals app/code/local/Mage/Core/Model/Session.php. Wir sind gerade darauf gestoßen. Dies ist sehr wahrscheinlich Ihr Problem. Um diesen Patch zu beschwichtigen, ohne übermäßig viel Zeit damit zu verbringen, ist es meiner Meinung nach am besten, die Patch-Änderungen zur lokalen Überschreibungsdatei hinzuzufügen. Ich glaube, Terpentin überschreibt diese Datei, weil ein Umschreiben für das jeweilige Szenario, das sie abdecken müssen, nicht funktioniert hat. Ich glaube nicht, dass dies in ein Umschreiben umgewandelt werden kann.

Hier ist die Patch-Änderung, die angewendet werden muss:

--- a/app/code/core/Mage/Core/Model/Session.php
+++ b/app/code/core/Mage/Core/Model/Session.php
@@ -36,7 +36,7 @@
  */
 class Mage_Core_Model_Session extends Mage_Core_Model_Session_Abstract
 {
-    public function __construct($data=array())
+    public function __construct($data = array())
     {
         $name = isset($data['name']) ? $data['name'] : null;
         $this->init('core', $name);
@@ -50,8 +50,27 @@ class Mage_Core_Model_Session extends Mage_Core_Model_Session_Abstract
     public function getFormKey()
     {
         if (!$this->getData('_form_key')) {
-            $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
+            $this->renewFormKey();
         }
         return $this->getData('_form_key');
     }
+
+    /**
+     * Creates new Form key
+     */
+    public function renewFormKey()
+    {
+        $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
+    }
+
+    /**
+     * Validates Form key
+     *
+     * @param string|null $formKey
+     * @return bool
+     */
+    public function validateFormKey($formKey)
+    {
+        return ($formKey === $this->getFormKey());
+    }
}
Kirkmadera
quelle
3

Meine Websites hatten eine Lack / Terpentin-modifizierte Version der Session.phpDatei im app/code/local/Mage/Core/Model/Verzeichnis.

Stellen Sie sicher, dass die entsprechenden Funktionen in dieser Datei wie folgt aussehen und alles wieder funktionieren sollte.

public function getFormKey()
{
    if (Mage::registry('replace_form_key') &&
            !Mage::app()->getRequest()->getParam('form_key', false)) {
        // flag request for ESI processing
        Mage::register('turpentine_esi_flag', true, true);
        return '{{form_key_esi_placeholder}}';
    } else {
        return $this->real_getFormKey();
    }
}

public function real_getFormKey()
{
    if (!$this->getData('_form_key')) {
        //$this->setData('_form_key', Mage::helper('core')->getRandomString(16));
        $this->renewFormKey();
    }
    return $this->getData('_form_key');
}

public function renewFormKey()
{
    $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
}

public function validateFormKey($formKey)
{
    return ($formKey === $this->getFormKey());
}
Andy Copley
quelle
2

Stellen Sie außerdem sicher, dass Sie nicht app/code/core/Mage/Core/Model/Session.phpdirekt ändern , sondern die Datei in kopieren app/code/local/Mage/Core/Model/Session.phpund die entsprechenden Änderungen vornehmen.

(Magento überprüft den localVerzeichnispfad, bevor der corePfad verwendet wird.

Sergey Repin
quelle
Ich habe vergessen und hatte Magento 1.9.2.4 im Wesentlichen mit App / Code / Local / Mage / Core / aus einer früheren Magento-Version in Local ausgeführt ... daher würde meine Administratoranmeldung beim POST unterbrochen.
BENN1TH
1

Fügen Sie die folgenden Funktionen zum Drittanbieter- / benutzerdefinierten Modul hinzu. Wenn nicht, implementieren / erweitern Sie die Funktionen ordnungsgemäß.

/**
* Creates new Form key
*/
public function renewFormKey()
{
$this->setData('_form_key', Mage::helper('core')->getRandomString(16));
}

/**
* Validates Form key
*
* @param string|null $formKey
* @return bool
*/
public function validateFormKey($formKey)
{
return ($formKey === $this->getFormKey());
}
}

Vielen Dank!

Nithin Ninan
quelle
0

Ich hatte den gleichen Fehler, für mich musste ich den Patch zurücksetzen (mit dem -R nach der .sh-Datei, aber ich weiß nicht, wie Sie über PHP vorgehen würden)

Dann in Magento gehe zu System -> Allgemein -> Web -> Sitzungsüberprüfungseinstellungen

Ich habe 'HTTP_X_FORWARDED_FOR validieren' in 'Nein' und 'HTTP_USER_AGENT validieren' in 'Ja' geändert. Stellen Sie sicher, dass Ihre Cookie-Domain korrekt eingestellt ist, auch wie "yourdomain.com".

Sobald ich dies getan habe, habe ich den Patch erneut angewendet und kann mich anmelden. Ich hoffe, dies hilft Ihnen bei der Lösung. Es scheint, dass falsche Sitzungsparameter das Problem mit dem Formularschlüssel verursachen.

Stellen Sie sicher, dass Sie Ihre Browser-Cookies auch vor dem Testen löschen

Ricky Odin Matthews
quelle