Тут мне поступило письмо от SlaXxX, но ввиду того, что оно не является конфиденциальной информацией и может представлять интерес для многих, я отвечу для всех.
---
Исходник:
привет. вопрос вот к тебе. текст надо фильтровать функцией check(), а вот почему в гостево например при записи фильтруеться текст только мускл...() а уже не чек
Тут, разрешите вначале вдаться немного в теорию, но она будет весьма полезна для всех, кто пишет моды, или дорабатывает двиг.
А теория (и общая практика) гласит следующее:
Все данные нудно хранить в том виде, как они поступают от пользователя.
---
Спросите: "а как же SQL инъекция?"
---
Тут вопрос правильный.
Для того, чтоб избежать SQL уязвимости, нам нужно насильно привести все типы данных к их истиному типу.
Числа мы обрабатываем:
$var = intval($var);
или, если нам нужно избежать отрицательных значений:
$var = abs(intval($var));
Для чисел, нам больше SQL уязвимость не страшна.
---
З.Ы.
Как Вы помните, числа у нас используются много где, к примеру:
- Номер страницы
- Идентификатор раздела
- Идентификатор юзера
- Другие идентификаторы
- И многие другие данные
Как Вы понимаете, вт этих данных не должно быть никаких "левых" знаков, кроме цифр.
Потому, "насильственное" преобразование к числу с помощью функции intval() то, что нужно.
З.Ы.
Как вариант, в отдельных случаях, можно проводить проверку, является ли полученные данные числом, и по результату проводить определенные действия...
Для "строчных" данных, все сложнее, однако, на этапе хранения, нам важно это самое хранение проводить надежно. То есть, избежать всяческих уязвимостей.
В случае со строчными данными и MySQL, нас реально спасает одноименная функция:
mysql_real_escape_string()
Она экранирует слэшами все опасные символы и исключает SQL инъекционную уязвимость.
значит достаточно при записи текста использовать mysql... спасибо за информацию. а то я всегда обрабатывал чек() а щас посмотрел в форуме, госте при записи она уже не используется...
я в разделе безопасности тож спрашивал об этом ))
SlaXxX (23.04.2009/07:04)
а то я всегда обрабатывал чек()
В принципе, check() тоже правильно, ибо она в себе содержит mysql_real_escape_string, правда там есть еще дополнительные преобразования, которые во многих случаях бывают лишними.
Полюбому, если используешь Чек, тоже можно.
[offtop]Алькатраз - археолог
[/offtop]