Formkey in Magento einbinden
Seit dem Magento Update auf die Version CE 1.9.3.4. wurde wieder einige Sicherheitslücken geschlossen. In manchen Fällen kann der durch im Checkout implementierte Formkey Probleme mit einem bestehenden Theme auslösen. Dies äußert sich in der Regel in einem fehlerhaften Checkout. Bei uns konnte der Kaufen-Button nicht mehr genutzt werden. Hier erklären wir dir, wie du den Formkey korrekt einbindest.
Formkey im Checkout
Der Formkey ist Magento-Entwicklern kein Unbekannter. Seit Mitte 2017 erhält dieser nun auch Einzug in den Checkout. Dabei liegt der Fokus auf der Absicherung gegen Cross Site Request Forgery. Damit nach dem Update der Formkey keine Probleme im Checkout verursacht ist es zwingend notwendig, dass einige Dateien um den Formkey erweitert werden.
Manueller Eingriff
Der Eingriff am offenen Magento System ist in der Tat schnell und sauber erledigt. Dabei müsst ihr die folgende Zeile vor dem schließenden -Tag einbinden:
<?php echo $this->getBlockHtml('formkey') ?>
Wie bei allen Updates und Eingriffen sollte natürlich vorher ein Backup gemacht werden und der Compiler deaktiviert werden.
Dateien finden
Nun geht es darum die korrekten Dateien zu finden. Die folgenden forms müssen um die obere Zeile erweitert werden:
Shipping cart form:
app/design/frontend/package/theme/template/checkout/cart/shipping.phtml
Multishipping billing checkout form:
app/design/frontend/package/theme/template/checkout/multishipping/billing.phtml
Multishipping shipping checkout form:
app/design/frontend/package/theme/template/checkout/multishipping/shipping.phtml
Multishipping addresses checkout form:
app/design/frontend/package/theme/template/checkout/multishipping/addresses.phtml
Billing checkout form:
app/design/frontend/package/theme/template/checkout/onepage/billing.phtml
Shipping checkout form:
app/design/frontend/package/theme/template/checkout/onepage/shipping.phtml
Payment checkout form:
app/design/frontend/package/theme/template/checkout/onepage/payment.phtml
Shipping method checkout form:
app/design/frontend/package/theme/template/checkout/onepage/shipping_method.phtml
Persistent Billing checkout form:
app/design/frontend/package/theme/template/persistent/checkout/onepage/billing.phtml
Wie nach jedem Update empfehlen wir die alte Dateien zu sichern und das Backup einige Zeit aufzubewahren.
Nach erfolgreichem Eingriff
Die Operation durchgeführt muss im Backend noch der Cache geleert werden die Form Key Validation im Backend aktiviert werden.
System → Konfiguration → Admin → Sicherheit → Enable Form Key Validation on Checkout
Ein Testkauf sollte nun problemlos ablaufen.