$sum=$_POST[\\\'m_amount\\\']; //Сумма, поступившая от клиента$bonus=$sum*0.05;
$refbonus=round($bonus, 2);$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\\\'\\\");$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\\\'\\\");if (!is_numeric($id) && !is_numeric($sum) && $sum<0) { echo $_POST[\\\'m_orderid\\\'].\\\"|error\\\"; exit(); }
Цитата: reklamawmb от 30.12.2018, 23:26
Спасибо за ответ!
И какие ещё данные лучше фильтровать и каким образом?
Цитата: WmRush от 31.12.2018, 16:15
Цитата: reklamawmb от 30.12.2018, 23:26
Спасибо за ответ!
И какие ещё данные лучше фильтровать и каким образом?
Все данные приходящие из вне, нужно обрабатывать, никогда нельзя оставлять в чистом виде, если ты конечно сам не уверен в том что переменная в любом случае чистая и валидная.
А лучше использовать подготовленные запросы и проблема с инъекциями отпадает. Но и все равно это не стоит пускать на самотек и все же фильтровать данные.
По поводу твоего обработчика: еще сравнивай суммы, валюту и проверяй ID платежа на уже исполненный платеж.
Цитата: 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(\\\"Счет уже был оплачен\\\");
Цитата: steam от 30.12.2018, 06:14
Цитата: WmRush от 01.01.2019, 13:00
Примерно вот так. Под себя подпилишь)
Цитата: steam от 01.01.2019, 21:12
WmRush, у него там генерируется подпись и сравнивается что пришло и что в базе, фактически там не подкопаться никак из-за того что в начале всего этого POST-ы шифруются(даже если подкинуть левого кода через post то он зашифруется и не выполнится) и сравниваются на совпадение, при том у себя в базе он формирует сам. Там тяжело подкопаться к этому. Только если подписи совпадают уже дальше платёж идёт, извлекаются суммы из POST-ов
<input type=\\\"hidden\\\" name=\\\"m_amount\\\" value=\\\"1.00\\\">