ВАЖНО Фильтрация переменных, как правильно фильтровать данные, краткая шпаргалка

Тема в разделе "Веб-разработка", создана пользователем X-Shar, 28 апр 2016.

↑ ↓
  1. X-Shar :)
    X-Shar
    Ответить в чате

    Администрация

    Регистрация:
    03.06.2012
    Сообщения:
    5.815
    Симпатии:
    435
    Пол:
    Мужской
    Репа:
    +971 / 153 / -29
    Jabber:
    Telegram:
    NSA_TOR_etc600.

    Почти каждый день можно встретить на форуме темы, так или иначе касающихся вопроса «а как же фильтровать данные, зачем фильтровать, подойдет ли мне эта функция для фильтрации, мне сказали, что в скрипте дыра и на главной странице моего сайта кто-то нацепил картинку, оскорбляющую мою честь и достоинство».Dmeh-Smeh-Smeh!!!

    По быстренькому и простому, что и как делать:

    1) Если в переменной должно быть число — используем $var=abs(intval($var)).

    Или: $var=filter_var($var,FILTER_SANITIZE_NUMBER_FLOAT).


    2) Если переменную надо вывести в браузер — используем $var=htmlspecialchars($var, ENT_QUOTES, «UTF-8»).

    Не забывайте, это фильтрует только опасные символы для того, чтобы они не работали как html-код.

    Иногда надо ограничить длину строки, обрезать её — это все должно быть сделано до фильтрации, иначе бывают случаи, когда & разрезается на две части, и мы получаем невалидную страницу (что самое парадоксальное, подобный баг был в самом ВКОНТАКТЕ в личных сообщениях, может и до сих пор сохранилась ошибка).

    3) Если переменную надо ввести в базу данных:

    а) можно просто очистить с помощью mysql_real_escape_string, но не забыть потом при выводе фильтрировать с помощью htmlspecialchars.

    б) фильтрируем с помощью htmlspecialchars, затем mysql_real_escape_string, затем запись в базу

    Вот и все. Главное, думать, что вы делаете, а не просто использовать 10 функций фильтрации, не понимая зачем они.

    Эти простые советы закроют минимум 90% всех возможных уязвимостей в коде, связанных с пользовательскими данными, но, по статистике взломов, даже эти мелочи не исполняются полностью то ли по невнимательности, то ли через мысли «а, никто не догадается» или «никому мой скрипт не нужен».
     
    • Информативный пост Информативный пост x 1

Поделиться этой страницей