проверить строку на опасные конструкции, получить длину GET запроса

Тема в разделе "PHP", создана пользователем modelsonline, 16 апр 2011.

Модераторы: latteo
  1. modelsonline

    modelsonline Постоялец

    Регистр.:
    18 окт 2010
    Сообщения:
    103
    Симпатии:
    9
    1. надо распознать наличие опасных символов и конструкций (не большинства а по возможности всех известных) в GET запросе. Может класс какой есть. Параметры проверяются в данный момент так:
    PHP:
    $known_params = array(    'param1'=> '/^[0-9]{2,3}$/''param2' => '/^yes|no$/i');

    foreach (
    $_GET as $param => $value) {
        if (
    array_key_exists($param$known_params)) {
            if (!
    preg_match($known_params[$param], $value)) {
                die(
    $err['param_bad_format']." ($param)");
            }
        } else {
            die(
    $err['param_unknown']." ($param)");
        }
    }
    Есть ли тут возможные проблемы.

    2. как получить длину GET запроса, ту что непосредственно отдает веб сервер бэкэнду php-fcgi.


    Где 1. и 2. безопаснее обрабатывать - на стороне nginx или методами php?
     
  2. steel_HILL

    steel_HILL Постоялец

    Регистр.:
    15 апр 2010
    Сообщения:
    53
    Симпатии:
    14
    1. htmlspecialchars() и intval() в большинстве случаев достаточно,
    ну и еще можно явассылки убирать - str_ireplace($_GET[], "javascript", "яваскрипт")
    2. strlen($_SERVER['REQUEST_URI'])
     
  3. modelsonline

    modelsonline Постоялец

    Регистр.:
    18 окт 2010
    Сообщения:
    103
    Симпатии:
    9
    2. возможно
    1. хочу проверить вот так
    PHP:
    $good = array ('a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t',
                        
    'u''v''x''y''z''w'' ''.',
                        
    '1''2''3''4''5''6''7''8''9''0',
                        
    '-''_''?''&' )
    если есть в $_SERVER['REQUEST_URI'] любой символ, не входящий в массив - die()
    Как сделать побыстрее и побезопаснее?
     
  4. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    как ты собрался проверять данные на стороне веб сервера?
    Это полуночный бред какойто.

    при написании кода - обращай особое внимание на фильтрацию и строгую типизацию входящих данных, и тогда "опасных констркукций" не будет, а то что ты описал выше - борьба с ветряными мельницами.
     
  5. modelsonline

    modelsonline Постоялец

    Регистр.:
    18 окт 2010
    Сообщения:
    103
    Симпатии:
    9
    Перейти по ссылке

    наверно в про надо было..