X-CSRF-Token Kritischer Fehler bei Newsletter Anmeldung

Shopware 5.4.5

Hallo alle zusammen!

 

Ich habe gestern um zwecks Debugging zum ersten mal das versenden von Fehlermeldungen via Email aktiviert. Das Debugging hat auch gut funktioniert, aber jetzt musste ich mit erschrecken feststellen, dass dort noch andere Probleme vorliegen, die ich zuvor wohl gar nicht mitbekommen habe.

In diesem Fall können sich scheinbar Nutzer nicht zum Newsletter anmelden.

Ich kriege folgende Fehler:

CRITICAL
Message: 	

The provided X-CSRF-Token for path "/newsletter" is invalid. Please go back, reload the page and try again.

Time: 	

2018-07-05T10:36:23.397700+0200

Channel: 	

core

request: 	

{
    "uri": "/newsletter",
    "method": "POST",
    "query": {
        "module": "frontend",
        "controller": "newsletter",
        "action": "index"
    },
    "post": {
        "subscribeToNewsletter": "1",
        "newsletter": " ***@***",
        "privacy-checkbox": "1"
    }
}

session: 	

No session data available

shopId: 	

1

shopName: 	

Vinum Mundi

Gefolgt mit der Meldung, die schätze ich mal die Ursache darstellt:

ERROR
Message: 	

Shopware\Components\CSRFTokenValidationException: The provided X-CSRF-Token for path "/newsletter" is invalid. Please go back, reload the page and try again. in /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Shopware/Components/CSRFTokenValidator.php:149
Stack trace:
#0 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Library/Enlight/Event/Handler/Default.php(91): Shopware\Components\CSRFTokenValidator->checkFrontendTokenValidation(Object(Enlight_Controller_ActionEventArgs))
#1 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Library/Enlight/Event/EventManager.php(220): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#2 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Library/Enlight/Controller/Action.php(176): Enlight_Event_EventManager->notify('Enlight_Control...', Object(Enlight_Controller_ActionEventArgs))
#3 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Library/Enlight/Controller/Dispatcher/Default.php(549): Enlight_Controller_Action->dispatch('indexAction')
#4 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Library/Enlight/Controller/Front.php(222): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#5 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Shopware/Kernel.php(215): Enlight_Controller_Front->dispatch()
#6 /var/www/vhosts/vinum-mundi.com/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(486): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#7 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(268): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#8 /var/www/vhosts/vinum-mundi.com/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(253): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#9 /var/www/vhosts/vinum-mundi.com/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(270): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true)
#10 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(143): Symfony\Component\HttpKernel\HttpCache\HttpCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#11 /var/www/vhosts/vinum-mundi.com/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(201): Shopware\Components\HttpCache\AppCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#12 /var/www/vhosts/vinum-mundi.com/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(116): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#13 /var/www/vhosts/vinum-mundi.com/httpdocs/shopware.php(122): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#14 {main}

Time: 	

2018-07-05T10:36:23.527502+0200

Channel: 	

core

request: 	

{
    "uri": "/newsletter",
    "method": "POST",
    "query": {
        "module": "frontend",
        "controller": "newsletter",
        "action": "index"
    },
    "post": {
        "subscribeToNewsletter": "1",
        "newsletter": " ***@***",
        "privacy-checkbox": "1"
    }
}

session: 	

No session data available

shopId: 	

1

shopName: 	

Vinum Mundi

Weiß da jemand, wie ich das beheben kann?

Shopware und alle PlugIns sind aktuell.

Ich werde mich jetzt mal durch die logs forsten, um zu sehen, ob da noch anderen Nutzern der Zugang zum Newsletter verwährt wurde.

 

Beste Grüße und vielen Dank im Voraus,

Sven

 

 

// Update

OK. Ich nehme an, das ist völlig normal. Da sind so viele E-Mail Adressen, das ich davon ausgehe das es sich nur um Bots handelt und der Token als Schutz funktioniert.

Wenn das so gewollt ist, kann man den log so konfigurieren, dass ich keine Kritischen Fehler mehr erhalte, nur weil der Token seine Funktion erfüllt?

Seit dem Update auf Shopware 5.4.5 bekomme ich die selbe Fehlermeldung. Wir haben das Fehlerreporting ständig aktiviert, so dass ich weiß, dass bei Version 5.4.4 das Problem noch nicht vorhanden war.

Weiß jemand, woran man erkennen kann, dass es sich tatsächlich um Bots, Spam etc. handelt und nicht um echte Anmeldungen?

Man kann den Reporting-Level hochsetzen, bei unseren Shops haben wir den Trigger jetzt auf ‚alert‘ hochgesetzt.

Woran erkennt man Spam/Bots? Manchmal einfach an der Uhrzeit. In den meisten deutschen Shops ist es schon ungewöhnlich, wenn sich plöztlich nachts um 3 zig Newsletterleser anmelden. Wenn man es genauer wissen will, könnte man in die Access-Logs des Servers schauen, und prüfen ob die Zugriffe zu einem ‚normalen‘ User passen. D.h. z.B. Einstieg über Hauptseite, ein bisschen surfen auf verschiedenen Seiten, dann Newsletter abonnieren. Häufig wirst Du im Access-Log aber nur genau einen Eintrag finden, der den CSRF-Fehler ausgelöst hat. Das macht kein Human.

Ich vermute, man kann mit gutem Gewissen heute davon ausgehen, dass es sich in 99,9 % der Fälle um Bots handelt. Kann auf einzelnen Sites aber natürlich auch anders sein.

Happy selling,
Geert

1 „Gefällt mir“