Ich schreibe die Informationen mal zusammen, dann braucht man sich den Thread auch nicht komplett durchlesen.
Hallo,
aktuell gibt es vermehrt Hinweise darauf, dass es während der Registrierung/Anmeldung in einigen Fällen zu einer Fehlermeldung kommt, die durch den CSRF-Token verursacht wird. Dieses Verhalten prüfen wir im Rahmen des Tickets SW-17932.
Anbei möchte ich euch einige Informationen auf den Weg geben, wir Ihr den Fehler eingrenzen könnt.
Zweck:
Der CSRF-Token ist ein Sicherheitsmechanismus der verhindert, dass ein POST-Request ohne Token ausgeführt wird. Ein typisches Beispiel wären Spam-Registrierungen von Bots ohne Session/Cookie. Damit wird aber auch verhindert, dass per Link ein POST-Request ausgeführt wird der bspw. eine Aktion im Backend ausführt.
Ausnutzung :
Das Feature besteht erst ab SW5.2 und bisher sind keine Fälle bekannt, die explizit auf einen fehlenden Token zurück zu führen sind. Shopware hat weitere Mechanismen die das Einspielen von Schadcode verhindern. Wenn man also etwas die Augen offen hält und nicht jeden x-beliebigen Link anklickt, gibt es auch ohne den Token erstmal keine bekannten Probleme. Es ist ein zusätzlicher Sicherheitslayer. Nach Deaktivierung hat man das Verhalten wie in SW5.1.
Fehlersuche :
Damit ihr zunächst herausbekommt, ob ihr von dieser Problematik betroffen seid, solltet ihr einen Blick in das SW-Log werfen (Verzeichnis /var/log) oder die Option „Fehlermeldung an Shopbetreiber senden“ aktivieren. Auf keinen Fall solltet ihr das erweiterte Debugging aktiv lassen (nur zur temporären überprüfung gedacht), da dies verhindert, dass im Fehlerfall der Token erneuert wird. Mit erweitertem Debugging bekommt der potentielle Kunde dann immer diese Fehlermeldung! Mit der Option „Fehlermeldung an Shopbetreiber senden“ werden auch weitere Parameter wie bspw. die Formulardaten mit übermittelt, damit man eingrenzen kann, ob ein Kunde den Fehler erzeugt hat oder ein Bot.
Deaktivierung:
Die Deaktivierung kann einfach über die config.php im Hauptverzeichnis des Shops vorgenommen werden. Der Code sieht wie folgt aus:
'csrfProtection' => [
'frontend' => false,
'backend' => true
],
Ein direktes Beispiel einer fertigen config.php:
[
'username' => '%db.user%',
'password' => '%db.password%',
'dbname' => '%db.database%',
'host' => '%db.host%',
'port' => '%db.port%'
],
'csrfProtection' => [
'frontend' => false,
'backend' => true
],
];
Es macht keinen Sinn den Schutz für das Backend zu deaktivieren, wenn man dort keine Probleme hat.
Sonstiges:
Nur weil eine solche Meldung im Log steht, ist man noch lange nicht von einem akuten Problem betroffen. Hier sollte man speziell auf die POST-Daten der Fehlermeldung, sowie die URL in den Logs überprüfen. Um eine detaillierte individuelle Überprüfung wird man hier nicht drum herum kommen. Es heißt nicht, dass der Fehler in den Logs unbedingt mit o.g. Problem etwas zu tun hat. Die Fehlermeldung kann alle Bereiche von SW betreffen.
Viele Grüße
Moritz