Безопасное использование обратного URL

Надеюсь, этот вопрос не слишком наивен...

Я пытаюсь реализовать API Giving Lab, чтобы пользователи моего сайта могли пожертвовать на благотворительность.

Используя URL-адрес такой:

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

пользователь перенаправляется на страницу пожертвования и затем возвращается в returnURL после того, как пожертвование было сделано.

Я хочу добавить, сколько пользователь пожертвовал моим базам данных, если они успешно завершили платеж. Можно ли использовать returnURL для этого? Т.е. могу ли я использовать returnURL в форме mywebsite.com?q="amount_donated", а затем использовать это для обновления моих баз данных?

Я вижу, что это позволило бы кому-то обновить мои базы данных, просто введя returnURL в свой браузер.

Есть ли вообще лучший метод, который устраняет эту проблему?

Большое спасибо.

1 ответ

Решение

Голландские банки используют то, что называется sha-sign (и они, вероятно, не первые)

Все, что вам нужно сделать, это добавить ключ, который может знать только вы:

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

    return sha1($secretKey);
}

Затем сделайте URL следующим образом:? Var1=foo&var2=bar&key=5e8b73da0b20481c1b4a285fb756958e4faa7ff1

А когда вы обрабатываете код после оплаты, makeSecureCode( $_GET['var1'], $_GET['var2']) должен быть равен $_GET['key']. Если нет, то кто-то изменил это.

Это простая версия с двумя переменными. Вы можете сделать так, чтобы у него было больше входных аргументов или массив, в зависимости от того, что вы предпочитаете.

Другие вопросы по тегам