安全地使用返回URL

时间:2013-06-25 13:28:51

标签: mysql api returnurl

希望这个问题不太天真......

我试图实施The Giving Lab API以允许我网站的用户捐赠给慈善机构。

  

使用这样的URL:

     

https://www.thegivinglab.org/api/donation/start?donationtype=0&amount=10&charityid=84ed3c54-6d8c-41c5-8090-f8ec800f45a7&returnurl=mywebsite.com/

     

用户被引导到捐赠页面,然后在捐赠完成后返回到returnURL。

如果用户成功完成付款,我希望能够添加用户捐赠给我的数据库的金额。是否可以使用returnURL来做到这一点?也就是说,我可以使用mywebsite.com?q="amount_donated"形式的returnURL;然后用它来更新我的数据库?

我可以看到,只需将returnURL输入浏览器,就可以让某人更新我的数据库。

是否有更好的方法可以消除这个问题?

非常感谢。

1 个答案:

答案 0 :(得分:1)

荷兰银行使用一种称为sha-sign的东西(它们可能不是第一种)

您所要做的就是添加一个只有您能够知道的密钥:

function makeSecureCode($var1, $var2){
    $secretCode = 'example';
    $secretKey = '';
    $secretKey.= $var1 .  $secretCode;
    $secretKey.= $var2 .  $secretCode;

    return sha1($secretKey);
}

然后将网址设为:?var1 = foo& var2 = bar& key = 5e8b73da0b20481c1b4a285fb756958e4faa7ff1

当您在付款后处理代码时,makeSecureCode($ _GET ['var1'],$ _GET ['var2'])应该等于$ _GET ['key']。如果没有,有人改变了它。

这是一个简单的版本,只有两个vars。你可以使它有更多的输入参数或数组,无论你喜欢什么。