Код (Text): if (isset($_REQUEST['delete'])) { $n=get_sql_count('orders',"rm='0' and host='".mysql_real_escape_string($_REQUEST[delete])."'"); if ($n) echo skin_redir_msg(self_url(),'Невозможно удалить сервер с заказами.'); else { mysql_query("delete from hosts where id='".mysql_real_escape_string($_REQUEST[delete])."'"); echo skin_redir_msg(self_url(),'Сервер удален. И все заказы на нём - тоже.'); } return; }
заменял $_REQUEST на $_POST Тож все чисто, а вот ai-bolit проверил и выдает что в строке if (isset($_REQUEST['delete'])) { Найдены сигнатуры шелл-скрипта вот и думаю где там он нашел шелл
мои домыслы: наверное проверялка имеет в виду, что изменения данных не должны делаться в get-запросе. а $_REQUEST позволяет вместо POST использовать GET параметры. что не есть хорошо. а вообще я не в курсе что за "айболит" )))
mysql_real_escape_string($_REQUEST[delete]) Если такой константы не будет php будет ругаться, на то, что константа delete не определена, а только потом будет смотреть на ключи глобального метода $_REQUEST. Нужно заключать в ковычки передоваемый ключ, как сделано у тебя тут: if (isset($_REQUEST['delete'])) { И не понимаю, если создали пользовательскую функцию для запросов, то почему в ней не сделать экранирование и приведение к типам? Чтобы не писать постоянно в запросе при использовании пользовательской созданной функции якобы для передачи в специальную функцию запросов. =) Либо тогда уже воспользоваться имеющими классами mysqli, pdo и другие, чем изобретать велосипед. К тому же их специально и сделали для этого. =)
В реквест в зависимости от конфигурации могут попадать куки и перекрывать нет пост, это конечно не уязвимость но может приводить к неожиданным результатам.