Всё обо всём

Двойные транзакции

69 250
user avatar
14 лет назад
Сообщений: 276
9 лет назад
Всем привет, нужен совет бывалых,
Как Вы защищаетесь от двойных транзакций! То есть пользователь может отправить одну форму в одно и тоже время, но с баланса спишется к примеру одна сумма!

Пример:
У юзера на балансе 1 руб, он отправляет второму юзеру этот рубль, но нажав одновременно два раза на кнопку, с него спишется 1 руб, а второму юзеру зачислится два рубля,

Вот и сам вопрос как можно от этого защитится?

За ранее спасибо!
Ответ на: WmRush · 9 лет назад
“Всем привет, нужен совет бывалых,<br />Как Вы защищаетесь от двойных транзакций! То есть пользователь может отправить одну форму в одно и тоже время, но с баланса спишется к примеру одна сумма!<br /><...”
user avatar
12 лет назад
Сообщений: 251
9 лет назад
Цитата: ra4ok14а второму юзеру зачислится два рубля
Оооо это плохо, самому интересно!
Ответ на: MARIOS · 9 лет назад
“<!--QuoteBegin ra4ok14 --><div class=\"title_quote\">Цитата: ra4ok14</div><div class=\"quote\"><!--QuoteEBegin-->а второму юзеру зачислится два рубля<!--QuoteEnd--></div><!--QuoteEEnd--><br />Оооо это...”
user avatar
13 лет назад
Сообщений: 1859
9 лет назад
ra4ok14,
так не бывает, одновремено не отсылается ничего, разница есть хоть и в милисекундах. Но ищи дыру.
Ответ на: Pretorian · 9 лет назад
“<b>ra4ok14</b>,<br />так не бывает, одновремено не отсылается ничего, разница есть хоть и в милисекундах. Но ищи дыру.”
user avatar
14 лет назад
Сообщений: 276
9 лет назад
Pretorian,
По логам и транзакциям видно, что два одновременных запроса! Я не утверждаю что это сделано в ручную, скорее всего бот.
Но факт остается тем что именно одновременные транзакции!
Ответ на: WmRush · 9 лет назад
“<b>Pretorian</b>,<br />По логам и транзакциям видно, что два одновременных запроса! Я не утверждаю что это сделано в ручную, скорее всего бот.<br />Но факт остается тем что именно одновременные транза...”
user avatar
10 лет назад
Сообщений: 745
9 лет назад
А некоторые вообще не парятся по этому поводу \":wink:\" На 1 сервисе закинул 100 р изначально а пришло 200 \":wink:\"
Ответ на: trolleybus · 9 лет назад
“А некоторые вообще не парятся по этому поводу <!--smile:wink--><img style=\"vertical-align: middle;border: none;\" alt=\":wink:\" src=\"https://sfb.su/engine/data/emoticons/wink.gif\" /><!--/smile-->...”
user avatar
13 лет назад
Сообщений: 1859
9 лет назад
ra4ok14,
может у тебя проверка на баланс не коректная, тоесть она срабатывает до того как срабатывает второй запрос. Хз тут много может быть теорий, но это может быть обманка. Он может накручивать на чем то другом, а это в логи писать для ввода тебя в заблуждение. обясни подробней с какого на какой баланс он делает перевод, куда и кому зачисляется и дублируется и что это за функция

Цитата: trolleybusА некоторые вообще не парятся по этому поводу \":wink:\" На 1 сервисе закинул 100 р изначально а пришло 200 \":wink:\"
может там акция на пополнение ))) новости читал?
Ответ на: Pretorian · 9 лет назад
“<b>ra4ok14</b>,<br />может у тебя проверка на баланс не коректная, тоесть она срабатывает до того как срабатывает второй запрос. Хз тут много может быть теорий, но это может быть обманка. Он может нак...”
user avatar
14 лет назад
Сообщений: 276
9 лет назад
Pretorian,
Смысл такой!
Есть модуль перевода средств между юзерами! Есть минимальная сумма перевода(проверка стоит), Есть проверка на доступный баланс и достатка средств на счете!
Юзер вписывает в форме ИД второго юзера которому он хочет передать деньгу, и сумму, потом идет проверка на минималку, потом проверка на достаток средств на балансе, так же присутствует проверка на существование юзера! После всего этого если все нормально, то происходит сначала списание средств с юзера_1, потом зачисление юзеру_2! Следом идет запись в логи что был перевод от юзера_1 к юзеру_2 на такую сумму, и собственно дата в Unix формате!

Таких логов сотни, разница между парами логов 1-2 сек, каждая пара логов(тоесть за каждый перевод 2 лога) имеет одну и туже дату в точности до секунды
Ответ на: WmRush · 9 лет назад
“<b>Pretorian</b>,<br />Смысл такой!<br />Есть модуль перевода средств между юзерами! Есть минимальная сумма перевода(проверка стоит), Есть проверка на доступный баланс и достатка средств на счете!<br...”
user avatar
13 лет назад
Сообщений: 1859
9 лет назад
ra4ok14,
надо код смотреть

а не тот ли это плагин перевода денег между юзерами для буксов поколения эдита что им барижили ???
Ответ на: Pretorian · 9 лет назад
“<b>ra4ok14</b>,<br />надо код смотреть<br /><br />а не тот ли это плагин перевода денег между юзерами для буксов поколения эдита что им барижили ???”
user avatar
10 лет назад
Сообщений: 745
9 лет назад
Цитата: Pretorianможет там акция на пополнение ))) новости читал?
Щас проверил , нету подобных новостей. Но довольно странная штука с пополнением для сервиса регистраций доменов ))))
Ответ на: trolleybus · 9 лет назад
“<!--QuoteBegin Pretorian --><div class=\"title_quote\">Цитата: Pretorian</div><div class=\"quote\"><!--QuoteEBegin-->может там акция на пополнение ))) новости читал?<!--QuoteEnd--></div><!--QuoteEEnd-...”
user avatar
14 лет назад
Сообщений: 276
9 лет назад
Pretorian,
Нет это писал я сам!
Вот метод класса отвечающий за это
http://pastebin.com/c3hgnMMr

А вот и сам метод модели
http://pastebin.com/PeUN1QMF
Ответ на: WmRush · 9 лет назад
“<b>Pretorian</b>,<br />Нет это писал я сам!<br />Вот метод класса отвечающий за это<br />http://pastebin.com/c3hgnMMr<br /><br />А вот и сам метод модели<br />http://pastebin.com/PeUN1QMF”
user avatar
13 лет назад
Сообщений: 317
9 лет назад
Цитата: Pretorianтак не бывает, одновремено не отсылается ничего, разница есть хоть и в милисекундах. Но ищи дыру.
Бред

Цитата: ra4ok14Есть модуль перевода средств между юзерами! Есть минимальная сумма перевода(проверка стоит), Есть проверка на доступный баланс и достатка средств на счете!
Юзер вписывает в форме ИД второго юзера которому он хочет передать деньгу, и сумму, потом идет проверка на минималку, потом проверка на достаток средств на балансе, так же присутствует проверка на существование юзера! После всего этого если все нормально, то происходит сначала списание средств с юзера_1, потом зачисление юзеру_2! Следом идет запись в логи что был перевод от юзера_1 к юзеру_2 на такую сумму, и собственно дата в Unix формате!

Таких логов сотни, разница между парами логов 1-2 сек, каждая пара логов(тоесть за каждый перевод 2 лога) имеет одну и туже дату в точности до секунды


Ну как вариант 800 рублей и всё разрулю.

Ну или тупо глянь api, которое я тебе писал для платёжной системы. Там была защита, ЕМНИП
Ответ на: Misha · 9 лет назад
“<!--QuoteBegin Pretorian --><div class=\"title_quote\">Цитата: Pretorian</div><div class=\"quote\"><!--QuoteEBegin-->так не бывает, одновремено не отсылается ничего, разница есть хоть и в милисекундах...”
user avatar
14 лет назад
Сообщений: 276
9 лет назад
Misha,
Все таки транзакции от этого спасают?
Ответ на: WmRush · 9 лет назад
“<b>Misha</b>,<br />Все таки транзакции от этого спасают?”
user avatar
14 лет назад
Сообщений: 164
9 лет назад
Бред, код показывай, обычно проблема в том что со всех всё списывает...
Ответ на: WiNNeR_tig · 9 лет назад
“Бред, код показывай, обычно проблема в том что со всех всё списывает...”
user avatar
13 лет назад
Сообщений: 1859
9 лет назад
и мне вот интересно
Ответ на: Pretorian · 9 лет назад
“и мне вот интересно”
user avatar
14 лет назад
Сообщений: 858
9 лет назад
Не, я конечно все понимаю, мега про фулл хацкеры и все такое, но читать весь бред бреда бредовый бред Ваш не могу \":lol:\"
ra4ok14, просто после завершения функции поставь break or sleep
или если хочешь, то запиши в сессию, куки или еще куда uniq id и все
ну в общем решай сам

Как я вижу шоп тут по прежнему деградирует \":lol:\"
Ответ на: ByFly · 9 лет назад
“Не, я конечно все понимаю, мега про фулл хацкеры и все такое, но читать весь бред бреда бредовый бред Ваш не могу <!--smile:lol--><img style=\"vertical-align: middle;border: none;\" alt=\":lol:\" src...”
user avatar
13 лет назад
Сообщений: 317
9 лет назад
Цитата: ByFly просто после завершения функции поставь break or sleep
Ох, сверхинтеллект подъехал
Ответ на: Misha · 9 лет назад
“<!--QuoteBegin ByFly --><div class=\"title_quote\">Цитата: ByFly</div><div class=\"quote\"><!--QuoteEBegin--> просто после завершения функции поставь break or sleep<!--QuoteEnd--></div><!--QuoteEEnd--...”
user avatar
14 лет назад
Сообщений: 287
9 лет назад
Цитата: ByFlyra4ok14, просто после завершения функции поставь break or sleep

\":belay:\" но ведь у него же скорее всего проблема в том, что скрипт вызывается два раза, т.е данные отправляются не единожды, думаешь тоже поможет? \":love:\" интересное решение да(сарказм) \":what:\"
Ответ на: Nikes · 9 лет назад
“<!--QuoteBegin ByFly --><div class=\"title_quote\">Цитата: ByFly</div><div class=\"quote\"><!--QuoteEBegin-->ra4ok14, просто после завершения функции поставь break or sleep<br /><!--QuoteEnd--></div><...”
user avatar
13 лет назад
Сообщений: 1859
9 лет назад
Цитата: ByFlysleep
если уж и ставить то наверное так sleep(1); не?
Ответ на: Pretorian · 9 лет назад
“<!--QuoteBegin ByFly --><div class=\"title_quote\">Цитата: ByFly</div><div class=\"quote\"><!--QuoteEBegin-->sleep<!--QuoteEnd--></div><!--QuoteEEnd--><br />если уж и ставить то наверное так sleep(1);...”
user avatar
13 лет назад
Сообщений: 317
9 лет назад
Цитата: Pretorianесли уж и ставить то наверное так sleep(1); не?
Не, фигня всё.

Лучше вообще сделать вот так
while(true){}

Байфлаич вообще молодец, тут люди про транзации дрочили и прочую хуйню,а он пришёл и самое действенное решение показал. Вот так просто, без понтов и прочего. Уважение таким людям!
Ответ на: Misha · 9 лет назад
“<!--QuoteBegin Pretorian --><div class=\"title_quote\">Цитата: Pretorian</div><div class=\"quote\"><!--QuoteEBegin-->если уж и ставить то наверное так sleep(1); не?<!--QuoteEnd--></div><!--QuoteEEnd--...”
user avatar
14 лет назад
Сообщений: 858
9 лет назад
Я все понимаю, OOP, Laravel, UI и прочее, вы в этом ох*енные дрочеры и тд и тп.
НО бл*дь, человек изобрел колесо, оно и в Африке колесо, оно будет круглым, тут та же фишка, думайте, ломайте головы, но ведь можно все просто сделать.

P.S. епт, создай куку, запиши туда IP и сделай проверку и всё

P.S.S. претор как всегда вы*бнулся, написав не название функции, а программный её вид \":lol:\"

Цитата: Nikes но ведь у него же скорее всего проблема в том, что скрипт вызывается два раза, т.е данные отправляются не единожды, думаешь тоже поможет? интересное решение да(сарказм)

ипать ты остряк, ну и что, пусть вызывается хоть 100 раз, ему то что из этого?
Ответ на: ByFly · 9 лет назад
“Я все понимаю, OOP, Laravel, UI и прочее, вы в этом ох*енные дрочеры и тд и тп.<br />НО бл*дь, человек изобрел колесо, оно и в Африке колесо, оно будет круглым, тут та же фишка, думайте, ломайте голов...”
Ответить