Помогите с фильтрацией данных, как нужно обрабатывать поля текстовые?
кроме strip_tags, trim, htmlspecialchars.
1. neatek - 17 Января, 2012 - 16:07:39 - перейти к сообщению
2. EuGen - 17 Января, 2012 - 16:23:45 - перейти к сообщению
Зависит от того, что Вы желаете с ними делать. Запись в БД - тогда mysql_real_escape_string
Вывод - тогда htmlspecialchars к примеру. Возможно, nl2br пригодится.
Вот что я бы рекомендовал - не отрезать html-сущности при запись в БД, но применять функции по их экранированию и замене при выводе данных.
А при валидации данных - самое лучшее и мощное средство это регулярные выражения.
Вывод - тогда htmlspecialchars к примеру. Возможно, nl2br пригодится.
Вот что я бы рекомендовал - не отрезать html-сущности при запись в БД, но применять функции по их экранированию и замене при выводе данных.
А при валидации данных - самое лучшее и мощное средство это регулярные выражения.
3. neatek - 17 Января, 2012 - 16:52:03 - перейти к сообщению
к примеру, комментарии, как обезопасить базуданных?
mysql_real_escape_string - просто экранирует символы?, т.е. "сломать" построенный запрос в mysql_query нельзя, так?
mysql_real_escape_string - просто экранирует символы?, т.е. "сломать" построенный запрос в mysql_query нельзя, так?
4. EuGen - 17 Января, 2012 - 16:53:23 - перейти к сообщению
Можно, если идет, скажем, поиск по LIKE или REGEXP - тогда это нужно предусмотреть и экранировать соответствующие символы (% в первом случае и preg_quote применять для второго).
В остальных случаях mysql_real_escape_string достаточен.
В остальных случаях mysql_real_escape_string достаточен.
5. neatek - 17 Января, 2012 - 20:27:16 - перейти к сообщению
Т.е. сломать запрос можно если используется в самом запросе LIKE или REGEXP?
А если просто WHERE id='1' ?
Не совсем понятно... т.е. replace делать на пустоту знака %?
preg_quote и вот это, оно ставит перед каждым символом (\\ + * ? [ ^ ] $ ( ) { } = ! < >|) слеш... а нельзя ли просто запретить в комментариях все кроме [а-я!?.,] ? и сделать htmlchar что-то там, кароч заменяет на %amp; и.т.д?
А если просто WHERE id='1' ?
Цитата:
% в первом случае
Не совсем понятно... т.е. replace делать на пустоту знака %?
preg_quote и вот это, оно ставит перед каждым символом (\\ + * ? [ ^ ] $ ( ) { } = ! < >|) слеш... а нельзя ли просто запретить в комментариях все кроме [а-я!?.,] ? и сделать htmlchar что-то там, кароч заменяет на %amp; и.т.д?