Keine Bestellung mehr möglich - The provided X-CSRF-Token is invalid

exception ‘Shopware\Components\CSRFTokenValidationException’ with message ‘The provided X-CSRF-Token for path “/register/saveRegister/sTarget/checkout/sTargetAction/confirm” is invalid. Please go back, reload the page and try again.’ in /var/www/vhosts/unseredomain.de/httpdocs/engine/Shopware/Components/CSRFTokenValidator.php:158
Stack trace:
#0 [internal function]: Shopware\Components\CSRFTokenValidator->checkFrontendTokenValidation(Object(Enlight_Controller_ActionEventArgs))
#1 /var/www/vhosts/unseredomain.de/httpdocs/engine/Library/Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Controller_ActionEventArgs))
#2 /var/www/vhosts/unseredomain.de/httpdocs/engine/Library/Enlight/Event/EventManager.php(214): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#3 /var/www/vhosts/unseredomain.de/httpdocs/engine/Library/Enlight/Controller/Action.php(143): Enlight_Event_EventManager->notify(‘Enlight_Control…’, Object(Enlight_Controller_ActionEventArgs))
#4 /var/www/vhosts/unseredomain.de/httpdocs/engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch(‘saveRegisterAct…’)
#5 /var/www/vhosts/unseredomain.de/httpdocs/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/vhosts/unseredomain.de/httpdocs/engine/Shopware/Kernel.php(180): Enlight_Controller_Front->dispatch()
#7 /var/www/vhosts/unseredomain.de/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(487): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#8 /var/www/vhosts/unseredomain.de/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#9 /var/www/vhosts/unseredomain.de/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(258): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#10 /var/www/vhosts/unseredomain.de/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(275): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true)
#11 /var/www/vhosts/unseredomain.de/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(133): Symfony\Component\HttpKernel\HttpCache\HttpCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#12 /var/www/vhosts/unseredomain.de/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(206): Shopware\Components\HttpCache\AppCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#13 /var/www/vhosts/unseredomain.de/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 /var/www/vhosts/unseredomain.de/httpdocs/shopware.php(117): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#15 {main}

Hilfe! Kann mir da jemand weiterhelfen?

Hi,

das wurde schon gefühlte 1000 Mal im Forum behandelt. Bitte in der config.php die Tokenvalidierung ausschalten:
 

 array(
        'username' => 'XXX',
        'password' => 'XXX',
        'dbname' => 'XXXXX',
        'host' => 'XXXXX',
        'port' => '3306'
    ),
    'front' => array(
    'throwExceptions' => false,
  ),
  'csrfProtection' => [
    'frontend' => false,
    'backend' => true
  ]
);

 

Hallo,

das ist kein Tipp. Ich hoffe, dass dieses Problem noch 10000 mal im Forum gepostet wird. Hier muss Shopware langsam mal das Problem ernst nehmen.

Ein absolut berechtigtes Sicherheitsfeature abklemmen und dieses als Lösung zu präsentieren…Sorry, das kann es nicht sein.

Ich empfehle allen mit diesem Problem im Issue-Tracker bei entsprechenden Tickets zu voten, um der nun nicht ganz neuen Problematik Gewicht zu geben. E

 

3 Likes

Wir haben das jetzt abgestellt über die config.php und hoffen einfach mal, das Shopware da irgendwann mal nachbessert. Im Issue-Tracker ist das leider als unwichtig eingestuft, daher wird das wohl noch dauern. Interessant, da ja wohl “10000” dieses Problem schon von mir hatten…

Hallo zusammen,

muss jetzt auch mal dazu was fragen. Habe auch Probleme mit diesem Token. Habe das auch in die config eingetragen aber habe die Fehler trozdem noch. Habe ich was falsch eingetragen?

 

<?php
return array(     'db' =\> array(         'username' =\> 'xxxxxxxx',         'password' =\> 'xxxxxxxxx',         'dbname' =\> 'xxxxxxxx',         'host' =\> 'xxxxxx',         'port' =\> '3306'     ),     /\*     'front' =\> [     'showException' =\> true,     'throwExceptions' =\> true,     'noErrorHandler' =\> false, 'csrfProtection' =\> [     'frontend' =\> false,     'backend' =\> false ],   Wäre schön wenn mir jemand helfen könnte.   Gruß Christian  

Hallo @PlotterAnne‍

am Ende von

front => [     

fehlt die schließende Klammer und das Komma. Außerdem ist ein /* mittendrin falsch und das
am Anfang kommt hoffentlich aus der Forensoftware und steht so nicht in der config.php.

Hinter : 

port’ => ‚3306‘
    ),

fängst Du eine neue Zeile an und fügst diesen Code ein.:

  'csrfProtection' => [
    'frontend' => false,
    'backend' => true
  ]

 

Den Teil mit front in deiner config.php solltest Du in einer produktiven Umgebung nicht verwenden.

 

Der komplette Code:

  array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'x',
    'password' => 'x',
    'dbname' => 'x',
  ),
'csrfProtection' => ['frontend' => false, 'backend' => false],
);

 

Hallo danke für die Antwort.

Aber irgendwie will das nicht funktionieren.

Wenn ich den Code so ändere wie Ihr es sagt ist meine Seite gar nicht mehr erreichbar.

So wie der Code da oben ist habe ich ihn aus der config Datei kopiert. Da steht aber noch viel mehr drin.

Hat da noch jemand eine Idee?

 

Gruß Christian

@PlotterAnne schrieb:

Hallo danke für die Antwort.

Aber irgendwie will das nicht funktionieren.

Wenn ich den Code so ändere wie Ihr es sagt ist meine Seite gar nicht mehr erreichbar.

So wie der Code da oben ist habe ich ihn aus der config Datei kopiert. Da steht aber noch viel mehr drin.

Hat da noch jemand eine Idee?

 

Gruß Christian

Dann kopiere deine config mit “Codeschnipsel einfügen” (links neben dem Smiley) hier ins Forum. Der Code von rpatzel ist das Minimum der config.php plus das Ausschalten des CSRF-Schutzes. Eventuell steht bei dir nicht localhost, sondern eine IP oder eine URL. Das musst Du dann natürlich von deinem System übernehmen. 

Es kann nicht sein, dass Du dies korrekt übernimmst und dein System grundsätzlich nicht funktioniert. Wenn nooch mehr in deiner config.php steht, dann musst Du hinter der ] in meinem Post noch ein Komma setzen. Du musst aber auch darauf achten, dass Du die anderen Einstellungen korrekt mit Klammern und Kommata gesetzt hast (s. erste Post).

Also hier ist der ganze Code der in der Config Datei steht.

 

 array(
        'username' => 'xxxxxx',
        'password' => 'xxxxxxxx',
        'dbname' => 'xxxxxxx',
        'host' => 'localhost',
        'port' => '3306'
    ),
    /*
    'front' => [
    'showException' => true,
    'throwExceptions' => true,
    'noErrorHandler' => false,
],
'csrfProtection' => [
    'frontend' => false,
    'backend' => false
],

//Zeige Low-Level PHP-Fehler
'phpsettings' => [
    'display_errors' => 1,
],

// Template-Cache
'template' => [
    'forceCompile' => true,
],

// Backend-Cache
'cache' => [
    'backend' => 'Black-Hole',
    'backendOptions' => [],
    'frontendOptions' => [
        'write_control' => false
    ],
],

// Model-Cache
'model' => [
    'cacheProvider' => 'Array' // supports Apc, Array, Wincache and Xcache
],

// Http-Cache
'httpCache' => [
    'enabled' => true, // true or false
    'debug' => true,
],
*/
);

 

/*     Warum steht das hier immer noch? 

@hth schrieb:

/*     Warum steht das hier immer noch? 

Weil dann die Seite nicht mehr erreichbar ist. sobald ich das weg nehme 

@PlotterAnne schrieb:

@hth schrieb:

/*     Warum steht das hier immer noch? 

Weil dann die Seite nicht mehr erreichbar ist. sobald ich das weg nehme 

Sorry, hatte nicht aufgepasst, Du schließt den Kommentar auch am Ende. Damit wird deine ganze config nach dem /* nicht berücksichtigt und die ist auch reichlich merkwürdig. Was sollen denn die ganzen Optionen überhaupt erreichen? Derzeit wird dein Shop mit der minimalen config.php von Shopware laufen und die ganzen übrigen Einstellungen kommen aus der Default-Config von Shopware. Ersetzt deine config.php komplett durch die Version von rpatzel (eigener DB-Name, Passwort) und das wird laufen.

 

Also du meinst dann nur diesen Teil ersetzen?

 

 ],
    'db' => [
        'username' => 'xxxxxx',
        'password' => 'xxxxxx',
        'dbname' => 'xxxxxx',
        'host' => 'localhost',
        'charset' => 'utf8',
        'adapter' => 'pdo_mysql'

Und da wo die xxxx sind trage ich meine Daten ein?

Nein diesen hier:

  array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'x',
    'password' => 'x',
    'dbname' => 'x',
  ),
'csrfProtection' => ['frontend' => false, 'backend' => false],
);

Und die xxxx ersetzt du mit deinen Daten

Du ersetzt deine komplette config.php durch eine neue config.php mit diesem Inhalt und ersetzt die „MeineXYZ“ Platzhalter mit deinen Zugangsdaten für die Datenbank. Dann ist der CSRF-Schutz sowohl im Backend als auch im Frontend deaktiviert. Wenn Du es im Backend behalten möchtest, musst Du hinter backen => false gegen true austauschen.

 

  array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'MeinDatenbankNutzer',
    'password' => 'MeinDatenbankPasswort',
    'dbname' => 'MeinDatenbankName',
  ),
  'csrfProtection' => [
    'frontend' => false,
    'backend' => false
  ],
);

 

1 Like

Super ich danke dir.

Jetzt hat es funktioniert und alles geht so wie es soll.   Thumb-Up

Das wurde ja auch Zeit :slight_smile:
Und nicht vergessen - das Abschalten dieses Sicherheitsmechanismus ist und bleibt alles andere als die richtige Lösung.
Du solltest das Thema verfolgen und bei kommenden Updates darauf achten, ob der Fehler berücksichtigt bzw. behoben wurde.

Dann solltest Du genau diesen Teil des Codes wieder löschen und das Ganze testen.

'csrfProtection' => [
    'frontend' => false,
    'backend' => false
  ],

 

Liebe Leute.

ich bin echt frustriert. Das ist jetzt mehrfach zu beobachten, dass das Abstellen der CSRF Protection permanent als Lösung zu einem anscheinend riesigen Bug in Shopware (wahrscheinlich ab 5.2) gehandelt wird. Statt massenhaft die entsprechenden Tickets im Issue-Tracker zu voten um Shopware ganz deutlich die Dringlichkeit zu verdeutlichen, wird einfach ein Sicherheitsfeature abgestellt. In einem Forumsbeitrag schien der “Tipp” sogar von einem Shopwaremitarbeiter zu kommen. Ich hoffe, dass dieses keine kollektive Firmenmeinung ist. Wir sind seit einigen Jahren begeisterte und grundsätzlich überzeugte Shopwarenutzer. Falls eine Firma solch einen Bug aber nicht ernst nimmt, ist man doch verunsichert, ob man auf das richtige Pferd gesetzt hat. Ein offizielles Statement zum CSRF Problem wäre interessant.

Ich finde es aber auch von vielen Nutzern unverantwortlich sich nicht mit absolut berechtigten Sicherheitsfeatures in ihrem System auseinandersetzen zu wollen.

Hier liest man dann im Forum von “diesem XSFR-Gedöns”, andere Nutzer regen sich auf, dass das Thema überhaupt noch angesprochen wird.

Für die, die über das Niveau “Gedöns” rauskommen wollen, zwei Links:

Wikipedia - allgemein: Cross-Site-Request-Forgery – Wikipedia

Zu Shopware -Blogbeitrag synonymous: https://synonymous.rocks/was-ist-cross-site-request-forgery-csrf/

 

Zumindest ist dem Issue-Tracker zu lesen, dass einige XSFR-Tickets scheduled sind. Ich hoffe, auf die Version 5.2.19.

3 Likes

Worüber in dem Zusammenhang kaum jemand ein Wort verliert -
Ich will gar nicht wissen, wie lange dieses Problem in unserem Shop schon existierte und wie viele Kunden sich aufgrund des “Ups…” ganz schnell verabschiedet haben.
Und das geht ganz vielen Shopbetreibern doch sicher genauso!? Man kann ja unmöglich nach jedem Update alle Funktionalitäten durchtesten.
Und jedes Mal ein komplettes Backup in der Frequenz, wie die Backups teilweise kommen - schafft und macht das Jeder?
Eins habe ich daraus gelernt: Ich werde kein Update mehr vorschnell einspielen und erstmal ein paar Tage im Forum schnuppern, was denn so passiert ist.

3 Likes