Какие параметры проверять и какие функции всегда использовать при заполнении формы?

Тема в разделе "PHP", создана пользователем Solomon Kane, 31 янв 2011.

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

    Solomon Kane Постоялец

    Регистр.:
    26 авг 2009
    Сообщения:
    144
    Симпатии:
    9
    Вопрос такой, какие параметры и функции следует проверять и использовать всегда при заполнении полей формы, где пользователь может что-то вводить, а не просто выбирать. В голову пока пришли такие:

    1) проверять, не пусто ли поле (если надо);

    2) trim(), то есть обрезка, чтобы не возникало никаких непредвиденных ситуаций;

    3) strip_tags - обрезать теги (если надо);

    4) длину (если надо, так как можно задать прямо в html);

    5) на соответствие каким-то символам - например, в поле должны строго быть буквы или цифры.

    Что ещё?

    Прочёл, что ещё иногда проверяют на xss-атаки. Если вкратце, как их могут применять через форму? Плюс хотелось бы знать на счёт JS и других языков. strip_tags() достаточно, чтобы их из формы удалить?
     
  2. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    PHP:
    function ClearFormData($data)

        
    $data = (string) $data;
        
    $data trim($data);
        
    $data = @strip_tags($data);
        
    $data stripslashes($data);
        
    $data htmlspecialchars($data);
        
    $bad_chars = array (
                                        
    "'"           => '',
                                        
    '"'           => '',
                                        
    "\\"          => '',
                                        
    "%00"         => '',
                                        
    "%0d"         => '',
                                        
    "%0a"         => '',
                                        
    "%22"         => '',
                                        
    "%27"         => '',
                                      );
        
    $data strtr($data$bad_chars);
        return 
    $data;
    }
    Да.
     
    Solomon Kane нравится это.
  3. Solomon Kane

    Solomon Kane Постоялец

    Регистр.:
    26 авг 2009
    Сообщения:
    144
    Симпатии:
    9
    Хотелось бы узнать, что означает {string} в данном случае? Также зачем тут стоит собачка - $data = @strip_tags($data)? И для чего нужен $bad_chars? Кроме того, что на счёт xss-атак?
     
  4. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    (string) - преобразование в строковый тип.
    @-подавление сообщения об ошибке. В функции используется на случай если в данных переданных от формы нет никаких тегов.
    Тут проще ссылкой обойтись ;)
     
    Solomon Kane нравится это.
  5. qwtqwt

    qwtqwt Писатель

    Регистр.:
    24 июл 2009
    Сообщения:
    2
    Симпатии:
    0
    Вырезай начальные и конечные пробелы, да экранируй. Зачем всё остальное?