Я даю пользователю конечную точку для вывода своего баланса.
Так что внутри моего http-сервиса я делаю что-то вроде:
var balance = currentBalance - withdrawlAmount;
ProcessWithdrawl(withdrawlAmount);
SaveBalance(balance);
Это не мой настоящий код, простоПридуманный пример, чтобы объяснить себя.
Я видел, как многие популярные сервисы сталкиваются с такими подходами, когда злоумышленники используют много параллельных запросов для запуска действий, которые не должны быть разрешены, так как баланс уже будет исчерпан.
Какой самый простой способ защититься от этого?Одна идея заключается в том, что я использую статический объект и код переноса в операторе lock()
.Это позволило бы обновлять только один баланс пользователя за один раз.
Как вы устанавливаете блокировку для сеанса аутентификации пользователей?Есть ли простой способ сделать это?