LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
28.05.2012, 01:40:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Фильтрация ввода  (Прочитано 3103 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Darkick
JComments Tester
*

Репутация: +236/-1
Offline Offline

Пол: Мужской
Сообщений: 1486



« : 22.07.2009, 13:13:56 »

Практически во всех встреченных компонентах в той или иной степени пользовательский ввод фильтруется не самым хорошим способом, что меня всегда очень расстраивает. К сожалению, JComments не стал исключением Sad.
Режутся тэги и всё то, что может быть принято за тэги, а это ведь неправильно. Хочу я написать в комментариях так:
Цитировать
Смотри как надо: <p align="right">Этот текст справа</p>

А если хочешь написать < и >, то используй &lt; и &gt;
а в итоге получится
Цитировать
Смотри как надо: Этот текст справа

А если хочешь написать < и >, то используй < и >

Я всё не понимаю, зачем так делают? Это ведь пользовательский ввод - вот и пусть сохраняется в базе как есть (без самовставленных <br />) и выводится как есть, обернув в nl2br(htmlspecialchars($comment, ENT_QUOTES, 'UTF-8'));. Ведь вот же форум - тут что написал, то и получил.

Можно ждать такое или в ближайшее время не светит? (подозреваю, что это может потянуть за собой хвост изменений)

Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #1 : 22.07.2009, 13:40:16 »

Скажем так, после выпуска JComments 2.1, в одном из младших релизов будет полноценно реализован BBCode-тег CODE, и все, что будет в него заключено, будет полноценно выводиться и не будет обрабатываться. И никак иначе...
Записан
Darkick
JComments Tester
*

Репутация: +236/-1
Offline Offline

Пол: Мужской
Сообщений: 1486



« Ответ #2 : 22.07.2009, 14:48:25 »

Ну CODE это хорошо, а вообще почему никак иначе? Ведь сейчас нельзя вот так написать:
Цитировать
Кричим <ура>
Останется просто
Цитировать
Кричим
что не есть правильно.
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #3 : 22.07.2009, 15:35:44 »

Ну CODE это хорошо, а вообще почему никак иначе?
Ну потому, что htmlspecialchars обработает и символ &, и символы кавычек. При этом, это затронет не только текст комментария, но и размещенные в нем теги, а например, в том же теге QUOTE используются кавычки. Во-вторых, если в тексте будут ссылки с параметрами, то в них & будет заменен на &amp;, и это повлечет за собой необходимость коррекции всех регулярных выражений, обрабатывающих ссылки. Да и чем вариант с CODE не устраивает?

Да и ввод-вывод у нас как организован? Пришло сообщение, мы его обработали, выкинули то, что посчитали лишним (запрещенные пользователю или неподдерживаемые BBCode, HTML-разметку и т.д.), сделали замену некоторых символов (например три точки на троеточие или два минуса на тире), и сохранили в БД. При отображении - запустили обработчик BBCode, он заменил теги на HTML-код, показали пользователю.

Теперь, если мы HTML вырезать не будем, то нам перед выводом надо вызывать htmlspecialchars. Но в какой момент? До обработки BBCode - попортим часть символов, после - попортим код, который вставился вместо BBCode. Устраивать танцы с бубном, перед заменой убирая весь HTML в закрома, а потом возвращая - это лишняя нагрузка на сервер при отображении. Которая, причем, будет выполняться при каждом обращении. И зачем это нужно?
« Последнее редактирование: 22.07.2009, 15:41:52 от smart » Записан
Darkick
JComments Tester
*

Репутация: +236/-1
Offline Offline

Пол: Мужской
Сообщений: 1486



« Ответ #4 : 22.07.2009, 15:51:58 »

как-то всё сложно Sad
Но форумы то как то работают. Ну да ладно.
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #5 : 22.07.2009, 16:06:49 »

Но форумы то как то работают
ты ради интереса возьми исходники того же SMF и посмотри как там реализована обработка BBCode (функция parse_bbc в файле Subs.php), по мне, так мощно конечно, но слишком много лишней работы и лишней нагрузки. Я подумаю, что здесь можно сделать, и попробую в следующих версиях как-то улучшить ситуацию.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet