I am thinking about this scenario:
a hacker opened the donation/purchase form page in our website, from the page source, he grabbed all the necessary data like accountid, accountguid, wid; then instead of hit click, he crafted another form with all the data he wanted and post it to OnSuccessfulUrl.
I can't check the source ip ( the SERVER["REMOTE_ADDR"] is from the user, not from FaaS server, I haven't figure out how this is down.).
I think FaaS should provide some verification method ( Maybe you already have one, but I didn't find it in the document; If you do, please point me to the right document, thanks). A simple solution could be using a private key known only by FaaS and account holder, when FaaS post back to service response url, also postback something like:
a unique ID string ( shouldn't be order number, caused declined/error transaction doesn't have order number. )
a current timestamp.
a verification string = md5 ( unique id + timestamp + private key )
a hacker opened the donation/purchase form page in our website, from the page source, he grabbed all the necessary data like accountid, accountguid, wid; then instead of hit click, he crafted another form with all the data he wanted and post it to OnSuccessfulUrl.
I can't check the source ip ( the SERVER["REMOTE_ADDR"] is from the user, not from FaaS server, I haven't figure out how this is down.).
I think FaaS should provide some verification method ( Maybe you already have one, but I didn't find it in the document; If you do, please point me to the right document, thanks). A simple solution could be using a private key known only by FaaS and account holder, when FaaS post back to service response url, also postback something like:
a unique ID string ( shouldn't be order number, caused declined/error transaction doesn't have order number. )
a current timestamp.
a verification string = md5 ( unique id + timestamp + private key )
Comment