Kann man _ajaxBeforeSend in jquery.csrf-protection.js überschreiben?

Hallo Community,

ich binde eine Bibliothek eines Drittanbieters über $(…).load(‘http://…’); ein. Dabei schlägt die CSRF-Protection in dem Sinne zu, dass Sie mir in den Request ein Token platziert, das wiederum beim Anbieter einen Fehler verursacht.

Ich kann mittels auskommentieren von 

request.setRequestHeader('X-CSRF-Token', this.getToken());

in _ajaxBeforeSend in jquery.csrf-protection.js dafür sorgen, dass das Token nicht gesetzt wird. Damit funktioniert alles. Das ist aber natürlich aus zwei Gründen unschön:

  1.  Ich reisse eine Sicherheitslücke bei allen Ajax-Request auf. -> Das könnte man sicherlich noch umgehen, wenn man o.g. nur für externe (Host) Requests ignoriert
  2. Da “Corehack” muss ich die Datei nach jedem Update manuell anpassen.

Ich komme vor allem in Punkt 2 nicht weiter. Da es sich hier ja nicht um ein Plugin handelt, weiß ich nicht wie ich diese Methode überschreiben kann. Hat jemand eine Idee?

Besten Dank schonmal,
André

https://developers.shopware.com/designers-guide/modify-jquery-plugins/

Müsstest dich vermutlich dann an folgendes Event hängen -> shopware/jquery.csrf-protection.js at 1d3d3131e330e63cf49845d5fdf2199d356992b4 · shopware/shopware · GitHub

Bin mir da aber nicht zu 100% sicher, ob es das richtige Event ist.

Oder du überschreibst die init function.

Gibt es einen speziellen Grund für diese Art der Einbindung?

Kannst dir das hier anschauen unten FroshProfiler/index.tpl at master · FriendsOfShopware/FroshProfiler · GitHub

1 „Gefällt mir“

@christiantrade schrieb:

https://developers.shopware.com/designers-guide/modify-jquery-plugins/

Müsstest dich vermutlich dann an folgendes Event hängen -> https://github.com/shopware/shopware/blob/1d3d3131e330e63cf49845d5fdf2199d356992b4/themes/Frontend/Responsive/frontend/_public/src/js/jquery.csrf-protection.js#L119

Bin mir da aber nicht zu 100% sicher, ob es das richtige Event ist.

Oder du überschreibst die init function.

Gibt es einen speziellen Grund für diese Art der Einbindung?

 

Hey, erstmal vielen Dank für die schnelle Hilfe!
Der Grund für die Einbindung ist, dass eine kleine App per js in der Seite nachgeladen wird, die wiederum AJAX-Requests macht. Bei denen ist dann der Header „Access-Control-Allow-Headers: X-CSRF-Token“ nicht gesetzt und deshalb gehen die nicht durch. Da gibt es ja jetzt offensichtlich zwei Möglichkeiten. Eine ist, das in der Applikation von dem Anbieter ändern zu lassen und die andere Shopware-seitig, das setzen der CSRF-Header in AJAX-calls gegen 3rd-Party-Server zu verhindern. Letztere wäre vermutlich die bessere Variante wenn ich es sauber hinkriege. Denn es macht ja keinen Sinn den Token an den 3rd-Party Server zu schicken. Ganz im Gegenteil sogar, meinem Verständnis der Materie nach.

Oder wie seht Ihr das?