【问题标题】:Using a Return URL Securely安全地使用返回 URL
【发布时间】:2013-06-25 13:28:50
【问题描述】:

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

我正在尝试实施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 来更新我的数据库。

有没有更好的方法来解决这个问题?

非常感谢。

【问题讨论】:

    标签: mysql api returnurl


    【解决方案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']。如果不是,有人更改了它。

    这是一个简单的版本,只有两个变量。你可以让它有更多的输入参数,或者一个数组,随你喜欢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 2017-01-26
      • 2019-08-22
      • 2015-10-29
      • 1970-01-01
      • 2020-10-23
      • 2017-09-11
      相关资源
      最近更新 更多