За последние 24 часа нас посетили 22107 программистов и 1125 роботов. Сейчас ищет 731 программист ...

$_GET нужен совет

Тема в разделе "PHP для новичков", создана пользователем wedest, 31 окт 2006.

  1. wedest

    wedest Активный пользователь

    С нами с:
    5 июл 2006
    Сообщения:
    166
    Симпатии:
    0
    вот делал проверки на приходящии перемные гетом, как этот код по безапастности? может чего добавить?
    PHP:
    1. reset ($_GET);
    2. while (list($key, $value)=each($_GET))
    3. {
    4.     $key=htmlspecialchars(trim(substr($value, 0, 255)));
    5. }
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Нагружен сильно, проверять надо не все данные а только те которые нуждаются в проверке, а уж править и тем более...
     
  3. wedest
    Понимаешь, не бывает абстрактной проверки на безопасность.
    Проверять надо конкретные переменные, в зависимости от того, что они делают.
    К примеру, если ты передаёшь имя файла, то надо проверять, чтобы оно было не зловредным.
    А просто так сказать, что делать с переменными $_GET - ничего нельзя

    А вообще, твой код ничего не защищает и не меняет.
     
  4. Anonymous

    Anonymous Guest

    +1
     
  5. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    PHP:
    1. <?
    2. // Защита от нецелочисленных GET-переменных
    3.    
    4.     function int_protect($what)
    5.     {
    6.         if (empty ($what))
    7.             return 0;
    8.         else {
    9.             if ((string) $what != (string)(int) $what) {
    10.                 die ("<b>Внимание!</b><br>Зафиксирована попытка взлома.<br>");
    11.             }
    12.             else
    13.                 return $what;
    14.         }
    15.     }
    16. ?>
     
  6. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Код переписывает одну и ту же переменную. Ближе наверно так

    PHP:
    1. $list = array_flip(array(\"key1\", \"key2\", \"key3\", \"key4\"));
    2. #Перечисляем разрешенные к обработке переменные
    3. while (list($key, $value)=each($list)){
    4.   if (isset($_GET[$key])) $$key=htmlspecialchars(trim(substr($_GET[$key], 0, 255)));
    5.   #Если есть то определяем для дальнейшего использования.
    6. }
    В этом случае у тебя не будут обрабатываться переменные которые ты не используеш в скрипте.
     
  7. wedest

    wedest Активный пользователь

    С нами с:
    5 июл 2006
    Сообщения:
    166
    Симпатии:
    0
    Я так понял что уневерсальную проверку $_GET сделать нельзя.
     
  8. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    можно, я сделал (на скорую руку конечно):
    http://php.ru/forum/viewtopic.php?t=1629&start=20
    =)