Shopware CSRF Token Protection

Mit Shopware 5.2 wurde der CSRF Token eingeführt. Der Token dient als Spam- / Bot-Schutz und soll einen Missbrauch in einer aktivien Session verhindern.

Leider funktioniert der Schutz in älteren Versionen von Shopware und Plugins nicht zuverlässig. Fast jedes Update von Shopware hat ein Problem mit dem Token behoben.

Nach dem Update auf Version 5.2. konnten Besucher teilweise keine Artikel in den Warenkorb legen oder die Fehlerseite „Ups ein Fehler ist aufgetreten“ wurde angezeigt. Der Shopbetreiber hat bei aktivierter Fehlerbenachrichtigung untenstehende E-Mail bekommen.

Abhilfe hat die Deaktivierung des CSRF Tokens in der config.php Datei mit folgendem Code gebracht:

‚csrfProtection‘ => [
‚frontend‘ => false,
‚backend‘ => false
],

Die genaue Anleitung zur Deaktivierung der Protection findet Ihr im Shopware Developers Guide.

Probleme ohne CSRF Token

Leider bekommt man mit deaktiviertem Token häufig Fehlermeldungen vom Server über nicht zustellbare E-Mails. Das liegt meistens an der Bestätigungsmail für den Newsletter im Footer. Bots registrieren sich mit einer ungültigen E-Mail Adresse und der Shopbetreiber erhält folgende Fehlermeldung. Wenn die E-Mails überhand nehmen hilft die Benachrichtigung im Shopware Backend zu deaktivieren.

———————————-

Message

exception ‚Shopware\Components\CSRFTokenValidationException‘ with message ‚The provided X-CSRF-Token is invalid. Please go back, reload the page and try again.‘ in /var/www/html/engine/Shopware/Components/CSRFTokenValidator.php:161
Stack trace:
#0 [internal function]: Shopware\Components\CSRFTokenValidator->checkFrontendTokenValidation(Object(Enlight_Controller_ActionEventArgs))
#1 /var/www/ud12_11/html/engine/Library/Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Controller_ActionEventArgs))
#2 /var/www/ud12_11/html/engine/Library/Enlight/Event/EventManager.php(214): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#3 /var/www/ud12_11/html/engine/Library/Enlight/Controller/Action.php(143): Enlight_Event_EventManager->notify(‚Enlight_Control…‘, Object(Enlight_Controller_ActionEventArgs))
#4 /var/www/ud12_11/html/engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch(‚indexAction‘)
#5 /var/www/ud12_11/html/engine/Library/Enlight/Controller/Front.php(223): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#6 /var/www/ud12_11/html/engine/Shopware/Kernel.php(176): Enlight_Controller_Front->dispatch()
#7 /var/www/ud12_11/html/vendor/symfony/http-kernel/HttpCache/HttpCache.php(487): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#8 /var/www/ud12_11/html/engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#9 /var/www/ud12_11/html/vendor/symfony/http-kernel/HttpCache/HttpCache.php(258): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#10 /var/www/ud12_11/html/vendor/symfony/http-kernel/HttpCache/HttpCache.php(275): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true)
#11 /var/www/ud12_11/html/engine/Shopware/Components/HttpCache/AppCache.php(133): Symfony\Component\HttpKernel\HttpCache\HttpCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#12 /var/www/ud12_11/html/vendor/symfony/http-kernel/HttpCache/HttpCache.php(206): Shopware\Components\HttpCache\AppCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#13 /var/www/ud12_11/html/engine/Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 /var/www/ud12_11/html/shopware.php(101): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#15 {main}

Request

{
„uri“: „/newsletter“,
„method“: „POST“,
„query“: {
„module“: „frontend“,
„controller“: „newsletter“,
„action“: „index“
},
„post“: {
„subscribeToNewsletter“: „1“,
„newsletter“: „tylana0122111@gmail.com“
}
}

Session

{
„sessionId“: „2a42bceb1dfd71057ae856701cfee7a1c4636ef6424c2b45f387c2f9274d13c3“,
„sArea“: null,
„sCountry“: null,
„sState“: null,
„X-CSRF-Token“: „QmFhIvpwvOZ86YDD8OO0evtRloSd9X“,
„Bot“: null
}

———————————-

Die beste und sicherste Möglichkeit ist das Update von Shopware und Plugins!

Weitere Infos zum Thema CSRF Protection gibt es im Shopware Develovers Guide.
Gerne bin ich beim Shopware Update und Problembehebung behilflich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.