Проверка входящих данных

Тема в разделе "PHP", создана пользователем Albert22, 25 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Всем привет
    Необходимость проверки пришедших извне данных является неоспоримой и очевидной. Однако, хотелось бы уточнить её алгоритмы для каждой конкретной ситуации. Например, имеются htmlspecialchars, trim, strip_tags, mysql_real_escape_string и прочие функции.
    Например, хотелось бы знать какие из них можно отбросить, и в каком порядке применить оставшиеся.
    У меня сейчас (в одну строку для наглядности:(
    Код:
    function mcheck($str){
    $str=htmlspecialchars(mysql_real_escape_string(strip_tags(trim($_POST['str']))));
    return $str;
    }
    Потом $str уходит в базу данных. Правильно ли это?
     
  2. ConstNW

    ConstNW Постоялец

    Регистр.:
    30 июн 2007
    Сообщения:
    132
    Симпатии:
    39
    если ты только начинаешь разбираться с контролем входящих данных, то применяй хорошие практики и современные инструменты.

    filter доступно в php начиная с версии 5.2.0
     
    Albert22 нравится это.
  3. lastbyte

    lastbyte Писатель

    Регистр.:
    2 июн 2009
    Сообщения:
    4
    Симпатии:
    0
    Смотря что, где и для чего фильтруем. Иногда можно обойтись просто указанием типа.
     
  4. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Просто данные, записываемые потом в MySQL.
    Числовые проверяю по шаблону \d, потом ставлю (int)
    Строковые (типа название города, имя, или же строка поиска по которой выборка осуществляется) — методом, описанным выше.
    Ещё есть html-код из WYSIWYG-редактора (форматированный текст). К нему strip_tags() не применишь, ибо тогда форматирование уберётся. Как это поле проверять? Перебором вручную? Разрешить стрипу некоторые теги и прорускать только атрибут style?
    В принципе как это реализовать догадываюсь, но не знаю правильно ли это будет.
     
  5. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Выглядит многообещающе.
    Судя по новизне этой возможности не исключено что использования лишь этих функций может быть достаточно?
     
  6. ConstNW

    ConstNW Постоялец

    Регистр.:
    30 июн 2007
    Сообщения:
    132
    Симпатии:
    39
    Ну они не такие уж и новые, просто в версии 5.2.0 они в составе php.
    До этого быле в pecl'e.

    Да их вполне достаточно, много чего проверяют и работают мега-шустро.
     
  7. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    308
    Симпатии:
    38
    Думаю что и на это найдется управы у хакеров...
     
  8. ConstNW

    ConstNW Постоялец

    Регистр.:
    30 июн 2007
    Сообщения:
    132
    Симпатии:
    39
    управы на всех всегда найдется.
    вопрос в том насколько просто эта управа реализуема.
    не надо разводить флуд.
     
  9. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    А что делать в ситуации когда надо пропустить html-код из визуального редактора?
     
  10. ConstNW

    ConstNW Постоялец

    Регистр.:
    30 июн 2007
    Сообщения:
    132
    Симпатии:
    39
    Вообще есть FILTER_SANITIZE_MAGIC_QUOTES.
    Лично я предпочитаю пользоваться функциями типа mysqli_real_escape_string.
    Они эскейпят символы основываясь кодировке соединения.
     
Статус темы:
Закрыта.