Race Condition я в проектах вижу чаще, чем хотелось бы: два запроса приходят почти одновременно, а сервер успевает проверить состояние дважды, но изменить его — неатомарно.
В итоге появляются три типовых сценария:
1. Двойная операция
Например, заказ/оплата/списание обрабатываются параллельно, и одна бизнес-операция проходит дважды.
2. Обход ограничений
Проверка лимита или прав выполнена до изменения данных, а второй запрос успевает влезть между проверкой и записью.
3. Подмена состояния
Пока один запрос ещё «думает», другой уже меняет сущность — и логика начинает работать на устаревших данных.
Схема обычно одна и та же:
`проверка -> ожидание -> запись`
Если между этими шагами нет блокировки, транзакции или хотя бы корректной идемпотентности, уязвимость уже рядом.
Я бы смотрел в первую очередь на места, где есть финальные действия: начисления, списания, смена статусов, выдача бонусов, привязка промокодов. Именно там Race Condition превращается из теории в инцидент.
Битрикс Stack
@BitrixStackPro
Race Condition я в проектах вижу чаще, чем хотелось бы: два запроса приходят почти одновременно, а сервер успе
Этот пост опубликован в Telegram-канале Битрикс Stack. Подписаться можно по ссылке: @BitrixStackPro.