Помощь

бонус рефереру от пополнения

4 13
user avatar
14 лет назад
Сообщений: 71
7 лет назад
Всем привет. Делаю на основе старого доброго суфаста игру.

Вот интересует вопрос, как сделать, чтобы при пополнении рефереру шли рефские за пополнение? Платежная система payeer.

Файл обработчик прикрепил.

 
Ответ на: reklamawmb · 7 лет назад
“Всем привет. Делаю на основе старого доброго суфаста игру.\r\n\r\nВот интересует вопрос, как сделать, чтобы при пополнении рефереру шли рефские за пополнение? Платежная система payeer.\r\n\r\nФайл обр...”
user avatar
14 лет назад
Сообщений: 663
7 лет назад
Пункт 1.

20-ая строка скрипта:

$sum=$_POST[\\\'m_amount\\\']; //Сумма, поступившая от клиента

делаешь ниже новую строку и добавляешь:

$bonus=$sum*0.05;
$refbonus=round($bonus, 2);


Тут высчитываешь рефереру бонус в процентах. Сумму пополнения умножаем на нужный процент(5%=0.05 10%=0.1). Измени под себя. Вторая строка - округляем полученный бонус до двух цифр после запятой(из 1.2449 получится 1.24, из 1.2450 получится 1.25)

 

Пункт 2.

Потом у тебя идут уже такие строки (31 и 32 в оригинале):

$sql=\\\"update tb_users set money=money+\\\'$sum\\\' where username=\\\'$user\\\'\\\";
mysql_query($sql);


Ниже делаешь пару новых строк отступа и вставляешь:

$sql=mysql_query(\\\"select referer from tb_users where username=\\\'$user\\\'\\\");
$ref=mysql_fetch_assoc($sql);
$referer=$ref[\\\"referer\\\"];
mysql_query(\\\"update tb_users set money=money+\\\'$refbonus\\\' where username=\\\'$referer\\\'\\\");

Обрати внимание на первой строке в запросе выделил referer, тебе нужно посмотреть как у тебя называется в базе поле в котором хранится реферер юзера и подставить его.

 

Пункт 3.

И ещё ниже у тебя видимо статистика пишется какая сумма вообще в проекте, сюда тоже надо подписать процент который подарил рефереру. После вот таких строк(37 и 38 в оригинале):

$sql=\\\"UPDATE tb_config SET rezerv=rezerv+\\\'$sum\\\' WHERE id = \\\'1\\\'\\\";
mysql_query($sql);

Добавляешь вот этот код:

mysql_query(\\\"UPDATE tb_config SET rezerv=rezerv+\\\'$refbonus\\\' WHERE id = \\\'1\\\'\\\");

 

Пункт 4.

Хоть вроде визуально в скрипт не подкопаться с подменой данных даже зная ключ и адрес скрипта(проверяется общая подпись). Меня как то коробит от того что $_POST-ы у тебя в чистом виде летят в базу. Я бы что нибудь вот такое в первые строки скрипта добавил:

if (!is_numeric($id) && !is_numeric($sum) && $sum<0) { echo $_POST[\\\'m_orderid\\\'].\\\"|error\\\"; exit(); }

 
Ответ на: steam · 7 лет назад
“Пункт 1.\r\n\r\n20-ая строка скрипта:\r\n\r\n<code>$sum=$_POST[\\\'m_amount\\\']; //Сумма, поступившая от клиента</code>\r\n\r\nделаешь ниже новую строку и добавляешь:\r\n\r\n<code>$bonus=$sum*<strong...”
user avatar
14 лет назад
Сообщений: 71
7 лет назад
Спасибо за ответ!

И какие ещё данные лучше фильтровать и каким образом?
Ответ на: reklamawmb · 7 лет назад
“Спасибо за ответ!\r\n\r\nИ какие ещё данные лучше фильтровать и каким образом?”
user avatar
14 лет назад
Сообщений: 276
7 лет назад

Цитата: reklamawmb от 30.12.2018, 23:26
Спасибо за ответ!

И какие ещё данные лучше фильтровать и каким образом?

Все данные приходящие из вне, нужно обрабатывать, никогда нельзя оставлять в чистом виде, если ты конечно сам не уверен в том что переменная в любом случае чистая и валидная.

А лучше использовать подготовленные запросы и проблема с инъекциями отпадает. Но и все равно это не стоит пускать на самотек и все же фильтровать данные.

По поводу твоего обработчика: еще сравнивай суммы, валюту и проверяй ID платежа на уже исполненный платеж.
Ответ на: WmRush · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-moderator\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum/profile/reklamawmb/\\\">reklamawmb</a></span>...”
user avatar
14 лет назад
Сообщений: 71
7 лет назад

Цитата: WmRush от 31.12.2018, 16:15

Цитата: reklamawmb от 30.12.2018, 23:26
Спасибо за ответ!

И какие ещё данные лучше фильтровать и каким образом?

Все данные приходящие из вне, нужно обрабатывать, никогда нельзя оставлять в чистом виде, если ты конечно сам не уверен в том что переменная в любом случае чистая и валидная.

А лучше использовать подготовленные запросы и проблема с инъекциями отпадает. Но и все равно это не стоит пускать на самотек и все же фильтровать данные.

По поводу твоего обработчика: еще сравнивай суммы, валюту и проверяй ID платежа на уже исполненный платеж.

Сравнивать как steam написал?? В 4 пункте.
Ответ на: reklamawmb · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-user2\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum/profile/wmrush/\\\">WmRush</a></span> от 31.12.201...”
user avatar
14 лет назад
Сообщений: 276
7 лет назад

Цитата: reklamawmb от 01.01.2019, 01:12

Цитата: WmRush от 31.12.2018, 16:15

Цитата: reklamawmb от 30.12.2018, 23:26
Спасибо за ответ!

И какие ещё данные лучше фильтровать и каким образом?

Все данные приходящие из вне, нужно обрабатывать, никогда нельзя оставлять в чистом виде, если ты конечно сам не уверен в том что переменная в любом случае чистая и валидная.

А лучше использовать подготовленные запросы и проблема с инъекциями отпадает. Но и все равно это не стоит пускать на самотек и все же фильтровать данные.

По поводу твоего обработчика: еще сравнивай суммы, валюту и проверяй ID платежа на уже исполненный платеж.

Сравнивать как steam написал?? В 4 пункте.

Примерно вот так. Под себя подпилишь)

if($row[\\\'amount\\\'] < $_POST[\\\'m_amount\\\'])
exit(\\\"Не верная сумма\\\");
if($_POST[\\\'m_curr\\\'] != \\\"RUB\\\")
exit(\\\"Не верная валюта\\\");
if($row[\\\'status\\\'] != 0)
exit(\\\"Счет уже был оплачен\\\");


 
Ответ на: WmRush · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-moderator\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum/profile/reklamawmb/\\\">reklamawmb</a></span>...”
user avatar
14 лет назад
Сообщений: 71
7 лет назад

Цитата: steam от 30.12.2018, 06:14

Все сделал, вроде как работает. + дописал еще немного. Начал понемногу вникать в php.  Оставил много-много комментариев в файле.

Перезалил файл, есть еще замечания какие? твою проверку сделал.  Сижу вот и думаю, как остальные $_POST проверить.

Цитата: WmRush от 01.01.2019, 13:00
Примерно вот так. Под себя подпилишь)

И после чего и где это вставлять?
Ответ на: reklamawmb · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-admin\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum/profile/steam/\\\">steam</a></span> от 30.12.2018,...”
user avatar
14 лет назад
Сообщений: 663
7 лет назад
WmRush, у него там генерируется подпись и сравнивается что пришло и что в базе, фактически там не подкопаться никак из-за того что в начале всего этого POST-ы шифруются(даже если подкинуть левого кода через post то он зашифруется и не выполнится) и сравниваются на совпадение, при том у себя в базе он формирует сам. Там тяжело подкопаться к этому. Только если подписи совпадают уже дальше платёж идёт, извлекаются суммы из POST-ов
Ответ на: steam · 7 лет назад
“<strong>WmRush, </strong>у него там генерируется подпись и сравнивается что пришло и что в базе, фактически там не подкопаться никак из-за того что в начале всего этого POST-ы шифруются(даже если подк...”
user avatar
14 лет назад
Сообщений: 71
7 лет назад
А как можно попытаться подменить значение?
Ответ на: reklamawmb · 7 лет назад
“А как можно попытаться подменить значение?”
user avatar
14 лет назад
Сообщений: 71
7 лет назад

Цитата: steam от 01.01.2019, 21:12
WmRush, у него там генерируется подпись и сравнивается что пришло и что в базе, фактически там не подкопаться никак из-за того что в начале всего этого POST-ы шифруются(даже если подкинуть левого кода через post то он зашифруется и не выполнится) и сравниваются на совпадение, при том у себя в базе он формирует сам. Там тяжело подкопаться к этому. Только если подписи совпадают уже дальше платёж идёт, извлекаются суммы из POST-ов

Я вот нажал пополнить баланс на 1 рубль, навел на кнопку, нажал просмотреть код, в значении

<input type=\\\"hidden\\\" name=\\\"m_amount\\\" value=\\\"1.00\\\">

изменил 1.00 на 100, и нажал оплатить, вылезло окошко Неверная подпись m_sign

и в браузере была строчка m_orderid=11044000&m_amount=100.00&m_curr=RUB
Ответ на: reklamawmb · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-admin\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum/profile/steam/\\\">steam</a></span> от 01.01.2019,...”
user avatar
14 лет назад
Сообщений: 663
7 лет назад
reklamawmb, ну файл заказа ты нам не показывал. У тебя там ещё ключ проверяется. Вопрос что можно сделать через заказ, но через оплату саму - адрес принимающего POST-ы файла знает только платёжка, плюс там ключ ещё раз повторюсь, который нужно знать для взлома.
Ответ на: steam · 7 лет назад
“<strong>reklamawmb,</strong> ну файл заказа ты нам не показывал. У тебя там ещё ключ проверяется. Вопрос что можно сделать через заказ, но через оплату саму - адрес принимающего POST-ы файла знает тол...”
user avatar
14 лет назад
Сообщений: 71
7 лет назад
Прикрепил файл, теперь вроде как кроме цифр и точки нечего не лезет в строку пополнения баланса, посмотрите. Какие еще будут замечания?
Ответ на: reklamawmb · 7 лет назад
“Прикрепил файл, теперь вроде как кроме цифр и точки нечего не лезет в строку пополнения баланса, посмотрите. Какие еще будут замечания?”
user avatar
14 лет назад
Сообщений: 663
7 лет назад
Вроде бы всё хорошо
Ответ на: steam · 7 лет назад
“Вроде бы всё хорошо”
Ответить