CSRF Abwehr

Um CSRF-Attacken abzuwehren, erzeugt das BPC bei jedem Login einen CSRF Token für den Benutzer. Dieser muss bei jedem Aufruf der API (außer GET Aufrufe), über den HTTP-Header X-Csrf-Token oder dem URL-Parameter X-Csrf-Token, übertragen werden.

Das BPC fügt diesen auf AJAX Calls über das ExtJS Framework automatisch hinzu.

Manuelles setzen des CSRF Tokens

Werden AJAX Aufrufe nicht über ExtJS aufgerufen kann der Header selbst gesetzt werden.

Die API Funktion BpcCommon.Api.getCsrfToken() gibt dafür ein Objekt zurück, dass im Attribut X-Csrf-Token den benötigten Token enthält.

Beispiel setzen des CSRF Headers im vanilla JavaScript AJAX Aufruf
function reqListener () {
    console.log(this.responseText);
}

const req = new XMLHttpRequest();
req.addEventListener("load", reqListener);
req.open("POST", "cxf/bpc-httpproxy/httpProxy/1647604124866");
req.setRequestHeader(
    "X-Csrf-Token",
    BpcCommon.Api.getCsrfToken()["X-Csrf-Token"]
  );
req.send();

Automatischen CSRF Token verhindern

Soll das BPC den CSRF Token nicht automatisch mit übertragen, so kann dies bei den Verbindungsparametern über das Flag disableBpcProcessing: true erreicht werden.

Beispiel
  Ext.create("Ext.data.Store", {
    proxy : {
         type        : "ajax",
         url         : "/url",
         extraParams : {
            disableBpcProcessing : true
         }
    }
});

Keywords: