За последние 24 часа нас посетили 30368 программистов и 1753 робота. Сейчас ищут 850 программистов ...

тут есть уязвимость?

Тема в разделе "PHP для новичков", создана пользователем wolf777, 9 ноя 2014.

  1. wolf777

    wolf777 Новичок

    С нами с:
    26 авг 2014
    Сообщения:
    207
    Симпатии:
    0
    Код (Text):
    1. if (isset($_REQUEST['delete'])) {
    2.   $n=get_sql_count('orders',"rm='0' and host='".mysql_real_escape_string($_REQUEST[delete])."'");
    3.   if ($n) echo skin_redir_msg(self_url(),'Невозможно удалить сервер с заказами.');
    4.   else {
    5.     mysql_query("delete from hosts where id='".mysql_real_escape_string($_REQUEST[delete])."'");
    6.     echo skin_redir_msg(self_url(),'Сервер удален. И все заказы на нём - тоже.');
    7.     }
    8.   return;
    9.   }
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Все чисто.
     
  3. wolf777

    wolf777 Новичок

    С нами с:
    26 авг 2014
    Сообщения:
    207
    Симпатии:
    0
    заменял $_REQUEST на $_POST Тож все чисто, а вот ai-bolit проверил и выдает что в строке if (isset($_REQUEST['delete'])) {
    Найдены сигнатуры шелл-скрипта вот и думаю где там он нашел шелл
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    Айболит может ошибаться :)
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    мои домыслы: наверное проверялка имеет в виду, что изменения данных не должны делаться в get-запросе. а $_REQUEST позволяет вместо POST использовать GET параметры. что не есть хорошо.

    а вообще я не в курсе что за "айболит" )))
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
  7. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    mysql_real_escape_string($_REQUEST[delete])
    Если такой константы не будет php будет ругаться, на то, что константа delete не определена, а только потом будет смотреть на ключи глобального метода $_REQUEST. Нужно заключать в ковычки передоваемый ключ, как сделано у тебя тут:
    if (isset($_REQUEST['delete'])) {
    И не понимаю, если создали пользовательскую функцию для запросов, то почему в ней не сделать экранирование и приведение к типам? Чтобы не писать постоянно в запросе при использовании пользовательской созданной функции якобы для передачи в специальную функцию запросов. =)
    Либо тогда уже воспользоваться имеющими классами mysqli, pdo и другие, чем изобретать велосипед.
    К тому же их специально и сделали для этого. =)
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В реквест в зависимости от конфигурации могут попадать куки и перекрывать нет пост, это конечно не уязвимость но может приводить к неожиданным результатам.