Goede avond,


Op het gebied van AJAX met gevoelige informatie ben ik nieuw en wil graag het volgende weten.
He gaat om een winkelwagen updaten en dan wel om het stukje verzending.

In de winkelwagen kun je kiezen voor verschillende verzendmethoden die elke zijn eigen kosten kent.
Het kiezen gaat d.m.v. een radio button, word deze veranderd dan word er een AJAX call gemaakt naar de PHP functie die de verzendkosten opslaat.
Bij sommige winkelwagens zie je dat ze een beveiliging's variabel meesturen die PHP dan eerst ontleed en als deze correct is word de functie uitgevoerd.

Mijn vraag is: Verzendmethoden is niet bepaald gevoelige informatie, waarom word er dan toch ook een stukje beveiliging meegestuurd?
Normaal kan je een dergelijk script wat via AJAX wordt aangeroepen niet vanuit een andere domein aanroepen. Dit komt door de CORS-headers. Je kan het wel (helaas) weer via PHP bijvoorbeeld opvragen.

Ik durf te wedden dat ze met deze code willen voorkomen dat iemand het kan manipuleren of buiten de site om dingen kan versturen.
Word dit dan gedaan met een session met daarin een hash die AJAX dan meestuurt en check je dan met PHP of de sessionhash correct is tegen het manipuleren?
Dat zou zeker met sessions kunnen.
Zo'n beveiligingscode heet een CSRF-token.
CSRF staat voor Cross-site request forgery en is dus inderdaad om te voorkomen dat iemand vanuit een andere website zaken kan manipuleren.
Dit word inderdaad vaak opgelost met een random gegenereerd token dat in de sessie word opgeslagen en bij het indienen van het formulier word gevalideerd.
Er zijn prima libraries om het voor je op te lossen, zoals deze: https://github.com/GramThanos/php-csrf
Yoeri Achterbergen op 25/02/2021 00:34:44

Verzendmethoden is niet bepaald gevoelige informatie, waarom word er dan toch ook een stukje beveiliging meegestuurd?

Ik neem aan dat het "de standaard" is van het gebruikte framework. Dat is meestal ook het eenvoudigst: dan hoef je er niet over na te denken. Beter een "lullige request" die toch/ook beveiligd is, dan een "belangrijke request" waarbij je het "net even vergeten bent".

Reageren