race-condition - отличная уязвимость, чтобы получить инвайт в античат. Всё же это посложней, чем найти десяток sql.
Собственно не так давно познакомился с этой уязвимостью. Уязвимость присутствовала на моём собственном проекте в продакшене, где участвует приличное кол-во живых денег. К счастью я с ней познакомился раньше, чем до неё кто-то добрался.
На моём сайте есть трансфер средств между юзерами. Я посылаю два одинаковых запроса в одно и тоже время (через js одновременно открываю 2 php скрипта с curl запросами), на перевод 1$ от Алисы к Бобу. Выполняются они практически одновременно. В итоге у Алисы списывается дважды по 1$, даже можно и трижды сделать, а Боб получает не более 1$.
Собственно вопрос. Можно ли как-то обратить такую уязвимость для подрисовки баланса, а не его снятия? Я пытался ставить разные setTimeout между запросами.. Не помогает, вроде.