ControllerAction mit in CSRFProtectedActions aufnehmen

Hallo zusammen,

in \Shopware\Components\CSRFTokenValidator::isProtected wird geprüpft ob:

  • controller instanceof CSRFGetProtectionAware
    - ControllerAction = CSRFProtectedActions 

Ich möchte einige Actions mit aufnehmen z.B.:

checkout/addArticle

Geht das und wie?

Hallo @frk‍,

dazu muss dein Controller das Interface  \Shopware\Components\CSRFWhitelistAware  implementieren.
Diese bringt dann auch eine neue Action mit: getWhitelistedCSRFActions

In dieser Action returnst du ein Array von den Action-Namen, die du CSRF-whitelisten möchtest.

Denk’ aber bitte dran, dass das, je nach Anwendungsfall, Sicherheitslücken öffnet und du dir sicher sein solltest, dass du deine Actions davon befreien willst.
Die CSRF-Protection hat ja erstmal eine Daseins-Berechtigung.

Gruß,
Patrick  Shopware

Hi Patrick,

danke schonmal.

Sinn und Zweck ist es, dass z.B. “checkout/addArticle” keinen CSRF-Token Schutz hat, das würde ich gerne umsetzen.

Wie bringt man 

Shopware_Controllers_Frontend_Checkout

bei, dass es CSRFWhitelistAware (oder ggf. CSRFGetProtectionAware) implementieren soll?

Ich würde sonst den Weg gehen den Service “shopware.csrftoken_validator” zu manipulieren.

Moin @frk‍,

aber warum willst du das?
Es ist nicht möglich in der Hinsicht bestehende Controller zu bearbeiten - und ich möchte dir erneut stark davon abraten!
In welchem Szenario würdest du Standard Funktionalitäten wie das Hinzufügen eines Artikels zum Warenkorb von der CSRF-Überprüfung ausnehmen wollen?

TL;DR: Es ist jedenfalls nicht ohne Weiteres möglich den Standard-Controller dazu zu bringen, das o.g. Interface zu implementieren.

Gruß,
Patrick  Shopware

Ich?
Ich will garnichts :wink:

Es gibt halt immer jemanden der es besser weiß und den Standard in Frage stellt.
Muss halt nur die Anforderung umsetzen.

Ich mach das jetzt per Plugin und manipuliere den Service.

Hab gehofft, dass es vielleicht eine Konfiguration gibt den man anpassen kann um Controller/Action zu pflegen, oder Ähnliches.

Aber danke nochmal, läuft schon

~closed~