$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
Цитата: 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-ов