ShopForBux.com
Всё обо всём

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

371 250
user avatar
Администратор
На сайте 15 лет
Сообщений : 276
Репутация : 0
9 лет назад #8656
Всем привет, нужен совет бывалых,
Как Вы защищаетесь от двойных транзакций! То есть пользователь может отправить одну форму в одно и тоже время, но с баланса спишется к примеру одна сумма!

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

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

За ранее спасибо!
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад #8657
Цитата: ra4ok14
а второму юзеру зачислится два рубля

Оооо это плохо, самому интересно!
user avatar
Пользователь
На сайте 13 лет
Сообщений : 1859
Репутация : 0
9 лет назад #8658
ra4ok14,
так не бывает, одновремено не отсылается ничего, разница есть хоть и в милисекундах. Но ищи дыру.
user avatar
Администратор
На сайте 15 лет
Сообщений : 276
Репутация : 0
9 лет назад #8659
Pretorian,
По логам и транзакциям видно, что два одновременных запроса! Я не утверждаю что это сделано в ручную, скорее всего бот.
Но факт остается тем что именно одновременные транзакции!
user avatar
Пользователь
На сайте 11 лет
Сообщений : 745
Репутация : 0
9 лет назад #8660
А некоторые вообще не парятся по этому поводу \":wink:\" На 1 сервисе закинул 100 р изначально а пришло 200 \":wink:\"
user avatar
Пользователь
На сайте 13 лет
Сообщений : 1859
Репутация : 0
9 лет назад #8661
ra4ok14,
может у тебя проверка на баланс не коректная, тоесть она срабатывает до того как срабатывает второй запрос. Хз тут много может быть теорий, но это может быть обманка. Он может накручивать на чем то другом, а это в логи писать для ввода тебя в заблуждение. обясни подробней с какого на какой баланс он делает перевод, куда и кому зачисляется и дублируется и что это за функция

Цитата: trolleybus
А некоторые вообще не парятся по этому поводу \":wink:\" На 1 сервисе закинул 100 р изначально а пришло 200 \":wink:\"

может там акция на пополнение ))) новости читал?
user avatar
Администратор
На сайте 15 лет
Сообщений : 276
Репутация : 0
9 лет назад #8662
Pretorian,
Смысл такой!
Есть модуль перевода средств между юзерами! Есть минимальная сумма перевода(проверка стоит), Есть проверка на доступный баланс и достатка средств на счете!
Юзер вписывает в форме ИД второго юзера которому он хочет передать деньгу, и сумму, потом идет проверка на минималку, потом проверка на достаток средств на балансе, так же присутствует проверка на существование юзера! После всего этого если все нормально, то происходит сначала списание средств с юзера_1, потом зачисление юзеру_2! Следом идет запись в логи что был перевод от юзера_1 к юзеру_2 на такую сумму, и собственно дата в Unix формате!

Таких логов сотни, разница между парами логов 1-2 сек, каждая пара логов(тоесть за каждый перевод 2 лога) имеет одну и туже дату в точности до секунды
user avatar
Пользователь
На сайте 13 лет
Сообщений : 1859
Репутация : 0
9 лет назад #8663
ra4ok14,
надо код смотреть

а не тот ли это плагин перевода денег между юзерами для буксов поколения эдита что им барижили ???
user avatar
Пользователь
На сайте 11 лет
Сообщений : 745
Репутация : 0
9 лет назад #8664
Цитата: Pretorian
может там акция на пополнение ))) новости читал?

Щас проверил , нету подобных новостей. Но довольно странная штука с пополнением для сервиса регистраций доменов ))))
user avatar
Администратор
На сайте 15 лет
Сообщений : 276
Репутация : 0
9 лет назад #8665
Pretorian,
Нет это писал я сам!
Вот метод класса отвечающий за это
http://pastebin.com/c3hgnMMr

А вот и сам метод модели
http://pastebin.com/PeUN1QMF
user avatar
Пользователь
На сайте 13 лет
Сообщений : 317
Репутация : 0
9 лет назад #8666
Цитата: Pretorian
так не бывает, одновремено не отсылается ничего, разница есть хоть и в милисекундах. Но ищи дыру.

Бред

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

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


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

Ну или тупо глянь api, которое я тебе писал для платёжной системы. Там была защита, ЕМНИП
user avatar
Администратор
На сайте 15 лет
Сообщений : 276
Репутация : 0
9 лет назад #8667
Misha,
Все таки транзакции от этого спасают?
user avatar
Пользователь
На сайте 14 лет
Сообщений : 164
Репутация : 0
9 лет назад #8668
Бред, код показывай, обычно проблема в том что со всех всё списывает...
user avatar
Пользователь
На сайте 13 лет
Сообщений : 1859
Репутация : 0
9 лет назад #8669
и мне вот интересно
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад #8670
Не, я конечно все понимаю, мега про фулл хацкеры и все такое, но читать весь бред бреда бредовый бред Ваш не могу \":lol:\"
ra4ok14, просто после завершения функции поставь break or sleep
или если хочешь, то запиши в сессию, куки или еще куда uniq id и все
ну в общем решай сам

Как я вижу шоп тут по прежнему деградирует \":lol:\"
user avatar
Пользователь
На сайте 13 лет
Сообщений : 317
Репутация : 0
9 лет назад #8671
Цитата: ByFly
просто после завершения функции поставь break or sleep

Ох, сверхинтеллект подъехал
user avatar
Пользователь
На сайте 14 лет
Сообщений : 287
Репутация : 0
9 лет назад #8672
Цитата: ByFly
ra4ok14, просто после завершения функции поставь break or sleep

\":belay:\" но ведь у него же скорее всего проблема в том, что скрипт вызывается два раза, т.е данные отправляются не единожды, думаешь тоже поможет? \":love:\" интересное решение да(сарказм) \":what:\"
user avatar
Пользователь
На сайте 13 лет
Сообщений : 1859
Репутация : 0
9 лет назад #8673
Цитата: ByFly
sleep

если уж и ставить то наверное так sleep(1); не?
user avatar
Пользователь
На сайте 13 лет
Сообщений : 317
Репутация : 0
9 лет назад #8674
Цитата: Pretorian
если уж и ставить то наверное так sleep(1); не?

Не, фигня всё.

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

Байфлаич вообще молодец, тут люди про транзации дрочили и прочую хуйню,а он пришёл и самое действенное решение показал. Вот так просто, без понтов и прочего. Уважение таким людям!
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад #8675
Я все понимаю, OOP, Laravel, UI и прочее, вы в этом ох*енные дрочеры и тд и тп.
НО бл*дь, человек изобрел колесо, оно и в Африке колесо, оно будет круглым, тут та же фишка, думайте, ломайте головы, но ведь можно все просто сделать.

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

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

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


ипать ты остряк, ну и что, пусть вызывается хоть 100 раз, ему то что из этого?
Автор темы
author avatar
WmRush
Администратор
На сайте 15 лет
Сообщений 276
Тем 14
Репутация 0
Теги темы
Автор не добавил тегов для этой темы
Ответить
Написал(а):