Форум → Программирование → PHP для идиотов → php5 фильтрация данных
php5 фильтрация данных
Страницы: ← Следующая страница →
-
Здравствуйте. Помимо старых знаний, я прочитал много про фильтрацию данных в пятой версии. И честно говоря, так и не понял, есть ли оптимальный вариант.
Все понятно с автоматизаторами (маджикквуотерами, слешами и прочимо глобалазами) я их не поддерживаю и понимаю что контролировать надо все самому.
И все-таки. Как фильтровать пользовательский ввод. Какие методы (помимо учета включеных автокавычек и соответствующих анти действий) нужно использовать, насколько и какие самостоятельные конструкции надо городить над, например, filter_input?
Извините, если я непонятен, я более чем новичок. Хочется понять принцип определения достаточности. -
8 февраля 2012 г. 20:27, спустя 5 минут 23 секунды
Поясню, вопрос родился из-за просмотра большого количества самостоятельных решений -
8 февраля 2012 г. 21:18, спустя 50 минут 48 секунд
какая разница, главное получить из одного другое или отказаться получать если всё плохо на столько -
8 февраля 2012 г. 23:40, спустя 2 часа 22 минуты 18 секунд
Принцип простой. Для чего фильтруют данные? Из соображений безопасности. Чтобы не впихнули html/js - раз, чтобы не провели инъекцию - два.
Первое решается strip tags или чем-то подобным. А еще можно использовать текстовые парсеры, движки разметки и т.п. В моей имиджбордочке html фильтруется при помощи texy.
Вторая проблема актуальна только для тех, кто ДО СИХ ПОР пользуется функциями работы с БД навроде mysql_query(). Не надо выполнять запросы напрямую. Пользуйтесь подготовленными выражениями. И не будет этой проблемы. Пусть хоть обосрутся, подсовывая кавычки.
Еще можно преобразовывать символы в их мнемоники или html-сущности, обязательно, если используется xhtml.
В общем, советую читать документацию, в ней все ясно и понятно изложено. Pro-tip: читать комментарии к документации, разбираться в приведенных примерах. -
9 февраля 2012 г. 0:25, спустя 44 минуты 50 секунд
Большое спасибо. По видимому я столкнулся с такой проблемой, что без возможности отследить историю появления, сейчас мне доступны ВСЕ наработки и примеры за всю историю (хотябы на официальном сайте), поэтому и сложно понять, зачем они есть при наличие все тогоже filter_var, которое вы повсей видимости не используете? Ведь смысл еще в том, что не хочется учить то, от чего откажутся, например, в 6ой версии. Немного подожду, попробую, вскоре постараюсь быть более конкретным в примерах. -
9 февраля 2012 г. 0:35, спустя 10 минут 7 секунд
Незначительным мелочам внимание придаешь. Надо от задачи идти. -
9 февраля 2012 г. 2:04, спустя 1 час 28 минут 16 секунд
ТырБыр, надо понять принципы, а не искать решение, которые каждый на свой вкус делает, просто зная принципы… -
9 февраля 2012 г. 13:59, спустя 11 часов 54 минуты 57 секунд
Пусть хоть обосрутся, подсовывая кавычки.
представил как это…не всё полезно, что в swap полезло -
12 февраля 2012 г. 0:39, спустя 2 дня 10 часов 40 минут
Спасибо, я принципов и искал. Смутили эти новые теги.
Вопрос в догонку. Правильно ли я понимаю что такие как $_POST экранируются в любом случае и не допускают отключения чтобы их не "того"? -
-
12 февраля 2012 г. 1:14, спустя 18 минут 30 секунд
Ну как чего … того!
Я вроде бы все меджики отключил, а переменные $_POST всеравно при изъятии экранированы. -
12 февраля 2012 г. 20:21, спустя 19 часов 7 минут 12 секунд
значит не все отключил или старые данные остались -
12 февраля 2012 г. 22:12, спустя 1 час 51 минуту 3 секунды
ТырБыр, phpinfo() покажине всё полезно, что в swap полезло -
26 февраля 2012 г. 23:35, спустя 14 дней 1 час 22 минуты
Извините, насчет экранирования сЛошил. (перепутал локальный и удаленный хост).
Зато я видимо понял, что ходел спросить. ))) Правильно ли я понимаю что:
1) хранение в GPC массивах опасного содержимого допускается и не может навредить, покуда не начинаешь его выводить или делать его частью запроса и т.п.
(Ведь тот же $_POST наполняется пользователем через форму, и кроме magic_quotes нет способа на это содержимое воздействовать на шаге ввода. Следовательно, этот magic сделан для защиты от необдуманного вывода, как средство, чтобы вместо реальной бяки получился мусор.)
2) экранирование, а точнее конкретные действия зависят от конкретной ситуации, и не имеет значения (помимо производительности) как ты его делаешь, addslashes или даже str_replace("<", "<", $text) или еще как. -
26 февраля 2012 г. 23:59, спустя 23 минуты 56 секунд
Маджик квотс это старое гавно, как и addslashes, которое при нём делается.
Ты можешь либо использовать данные полученные от ползователя, либо не использовать. Например, если ты просишь пользователя ввести одни цыфры, а он вводит буквы - пошел он нахуй сразу, даже не надо обрабатывать эти данные.
Если он вводит всё как ты просишь и у тебя теоретически нет претензий, тогда ты просто вставляешь это в БД, используя механизмы защиты драйверов БД (типа mysqli->escape (или как там…), pdo->prepare->execute) ), а если выводишь данные будь то из базы или нет, то преобразуешь их в html-сущьности как бы (htmlentities htmlspecialchars).
Вот и всё.
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!