Magento Tech-News

Wer die Hinweise zum aktuellen Patch SUPEE-9767 bzw. zu den neuen Versionen nur flüchtig liest, der verpasst wesentliches. Nach einigen Tagen Erfahrung mit dem neuen Patch, möchten wir an dieser Stelle zusammenfassen, was vor bzw. nach der Installation beachtet werden muss.

Update 13.07.2017: Magento hat eine Überarbeitung des Patches SUPEE-9767 unter dem Namen SUPEE-9767v2 veröffentlicht. Dieser ersetzt den ursprünglichen SUPEE-9767. Die hier beschriebenen Hinweise zu Vor- und Nacharbeiten bleiben weiterhin gültig.

Auch bei Magento auf der offiziellen Website zum Patch wusste man es im Nachhinein einmal mehr besser. Dort erschien nach kurzer Zeit ein vorangestellter Hinweis zu einer Konfigurationsänderung rund um Symlinks in Themes. Diese Option muss vor Anwendung des Patches deaktiviert werden, da sie mit dem Patch entfällt und damit nachträglich nicht mehr im Admin-Bereich deaktiviert werden kann. Also unbedingt vor dem Patchen prüfen, ob:

System > Konfiguration > Fortgeschritten > Developer > Enable Symlinks

deaktiviert  ist. Hat man das vergessen, erhält man im Backend einen freundlichen Hinweis, dass diese Option deaktiviert werden muss. Dies kann dann allerdings nur noch direkt über die Datenbank geschehen. Dabei hilft folgende Query:

UPDATE core_config_data SET value = 0 WHERE path = "dev/template/allow_symlink";

Formkey jetzt auch im Checkout – Manueller Eingriff notwendig!

Der Formkey ist mittlerweile ein alter Bekannter für Magento-Entwickler und hält nun auch Einzug in den Checkout. Magento hat dafür allerdings freundlicherweise einen Feature-Switch spendiert. Denn wird der Patch angewendet und der Formkey im Checkout erwartet, so würden alle Magentos mit angepasstem Theme den Dienst versagen.

Hier ist also ein manueller Eingriff ins jeweilige Magento-Theme notwendig, bei dem der Formkey als in die folgenden Formulare eingebettet werden muss:

  • app/design/frontend/<package>/<theme>/template/checkout/cart/shipping.phtml
  • app/design/frontend/<package>/<theme>/template/checkout/multishipping/billing.phtml
  • app/design/frontend/<package>/<theme>/template/checkout/multishipping/shipping.phtml
  • app/design/frontend/<package>/<theme>/template/checkout/onepage/billing.phtml
  • app/design/frontend/<package>/<theme>/template/checkout/onepage/shipping.phtml
  • app/design/frontend/<package>/<theme>/template/checkout/onepage/payment.phtml
  • app/design/frontend/<package>/<theme>/template/checkout/onepage/shipping_method.phtml
  • app/design/frontend/<package>/<theme>/template/persistent/checkout/onepage/billing.phtml

Die folgende Zeile:

<?php echo $this->getBlockHtml('formkey') ?>

kann als letzte Zeile vor dem schließenden „</form>“-Tag eingebunden werden. Ist das erledigt muss der Formkey im Checkout noch via Admin-Bereich aktiviert werden. Das geschieht in:

System > Konfiguration > Admin > Sicherheit > Enable Form Key Validation On Checkout.

Solange das noch nicht der Fall ist, wird im Admin-Bereich folgender Hinweis angezeigt:

Important: Formkey validation on checkout disabled. This may expose security risks. We strongly recommend to Enable Form Key Validation On Checkout in Admin / Security Section, for protect your own checkout process.

Immer eine gute Idee

Wie bei jedem Magento-Update oder -Patch gilt auch bei diesem: Zunächst ausgiebig im Entwicklungssystem testen und nach der Anwendung unbedingt den Applikations-Cache leeren!

Nachtrag: Kommt der Patch zum Patch?

Es sieht in der Tat so aus, als müsste Magento noch einmal nachlegen und den vorliegenden Patch überarbeiten. Anwender klagen über ein Problem beim Checkout mit Neuregistrierung als Kunde, wenn „Enable Form Key Validation On Checkout“ aktiviert ist. Wenn eine Bestellung getätigt wird und der Kunde sich dabei entscheidet, sich als Nutzer in Magento zu registrieren, so wird die Bestellung zwar korrekt angelegt, jedoch wird kein neuer Nutzer-Account erzeugt. Betroffene Händler können „Enable Form Key Validation On Checkout“ unter:

System > Konfiguration > Admin > Sicherheit > Enable Form Key Validation On Checkout

deaktivieren und auf ein weiteres Update seitens Magento warten.