[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Фильтрация пользовательского ввода.
Страницы: 1, 2, 3, 4, 5
twin
Arh
Цитата
А мясо лучше хранить в коровах, чем в консервах? =)
Естественно. И зря смеешся. В мертвых или живых - вопрос вторичный. А попробуй из тушенки сделать шашлык или бифштекс.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
DedMorozzz
Цитата (twin @ 20.11.2014 - 14:04)

Почему недопустима фильтрация:
1. Это искажает данные. Почему за меня решают, как будет выглядеть мой текст после фильтрации?

А кто сказал что твои данные будут видны тебе
Я использую И 1й и 2й вариант

К примеру делал так для поиска. Юзер вводит какое-то название. Я сохраняю оба варианта. И отфильтрованное и юзерское
Т.е. ввёли M`cDonalds, Mc`Donalds, McDonald`s и т.д.
Но сохраняю во всех случаях - McDonalds
И что бы что-то найти - юзерские данные не годятся. Для этого я их и фильтрую. Вырезаю все спец символы
А когда, после поиска "mcdonalds" будет произведена выборка - я вывожу уже то, что вводили юзвери. Так что да, я использую ОБА варианта. Одним тут не обойтись

Вот тебе пример пользовательских данных: http://www.google.com/jobs/archive/britney.html
Это вариант Написания Бритни Спирз на англ. языке

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
twin
DedMorozzz
Хранить два варианта и оба в базе... Мсье знает толк в извращениях.
Цитата
И что бы что-то найти - юзерские данные не годятся. Для этого я их и фильтрую. Вырезаю все спец символы
Как ты найдешь <twin>? Если брички обрезаны?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
Цитата
Просто подмена базовых понятий предполагает дилетантство оппонента

Я уже раз 20 написал что ничего не подменял. Это ты так зациклился.
Цитата
С таким же успехом могу тебя обвинить в том, что ты htmlspecialchars называешь обработчиком bb кодов.

проехали.

Цитата
Почему за меня решают, как будет выглядеть мой текст после фильтрации?

В первых потому что ты спамер, а политика ресурса запрещает использование каких либо ссылок.
Во вторых при чём тут это? Название темы "Фильтрация пользовательского ввода.", то есть фильтрация есть в любом случае, не важно какая, важно когда?

Цитата
Нельзя быть совершенно уверенным, что "отфильтровано" всё, что необходимо.

Естественно так удобней - "Запрещено всё, что не разрешено".
Но кривизна реализаций фильтров не говорит о том, что их нужно обязательно запускать после базы. Это вообще тут не причём.

Кривизна валидаций, маразмы с грёбаной розой, пьяный или полу пьяный Вася итд итп вообще не относиться к этому, да и к какому либо другому вопросу.

Цитата
А вот и камень преткновения - изменение данных. Тот самый htmlspecialchars().

Наконец то по теме =)

Цитата
Что ты будешь делать, если потребуется исходный текст?

Сделаю htmlspecialchars_decode.

Цитата
Если ты сейчас скажешь, что совершенно точно знаешь, что данные никогда не потребуются в исходно виде, тогда сделаем скидку на малый опыт и прекратим дискуссию. За неимением смысла.


Да какие данные? Смотря какая задача. Кучу примеров уже привёл, настоящих.
Зачем мне понадобятся исходные данные с ссылками, js, и прочим мусором, которого тут (допустим в комментах) быть не должно? Коммент уже написан, он увековечен, его не надо даже редактировать, слово не воробей как говориться.

Цитата
тогда сделаем скидку на малый опыт и прекратим дискуссию

Я - новичек, без опыта, привожу кучу примеров, а вы дядя профессор ни одного. Ничего не напоминает? Из тех же срачей про ООП, где от ООПшников только и слышно "а как ты сделаешь это, а как это?", а сами примеров не приводят и только говорят "лучше делать только с ООП".


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
DedMorozzz
Цитата (twin @ 20.11.2014 - 14:41)

Хранить два варианта и оба в базе... Мсье знает толк в извращениях.

Подскажешь вариант получше? smile.gif

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Arh
twin
Цитата
Как ты найдешь <twin>? Если брички обрезаны?

А зачем искать <twin> если "брички" обрезаны?
Точнее зачем писать <twin> если это будет вырезано?

А как ты найдёшь документ в котором написано про тег <strong> ?
Не те миллион документов, где <strong> используется для оформления, а только те документы, где <strong> как &lt;strong&gt; то есть предназначенный не для оформления, а для описания данного тега.

<strong>Заголовок</strong>
<code>

&lt;strong&gt;Жирный&lt;/strong&gt; - пример как делать жирным
</code>


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Arh
Цитата
Сделаю htmlspecialchars_decode.
А я говорил - не торопись. Попробуй проделать это с преславутым <twin>
Цитата
А зачем искать <twin> если "брички" обрезаны?
Точнее зачем писать <twin> если это будет вырезано?
Вот именно. Ты решил за меня, что можно писать, а что нельзя. Если на ресурсе нельзя написать что то в бричках, нужно бежать с такого ресурса как можно быстрее. Я должен видеть все свое сообщение непокоцанным, а именно таким, каким вводил.
Цитата
Зачем мне понадобятся исходные данные с ссылками, js, и прочим мусором, которого тут (допустим в комментах) быть не должно?
Всё это должно отображаться в комментарии простым текстом. Вот почему не срабатывает скрипт. его никто же не вырезал:

<script>alert('Не трогай данные!!!')</script>

Цитата
А как ты найдёшь документ в котором написано про тег <strong> ?
Не те миллион документов, где <strong> используется для оформления, а только те документы, где <strong> как &lt;strong&gt; то есть предназначенный не для оформления, а для описания данного тега.
Так и найду. Введя <strong>. Это текст, это не элемент разметки. Разметке нечего делать в базе вообще. Вот это

<strong>Заголовок</strong>
<code>
&lt;strong&gt;Жирный&lt;/strong&gt; - пример как делать жирным
</code>

В базе недопустимо. Это допустимо только в HTML. Для того и придумали bb-теги, не от хорошей жизни.

Цитата
Коммент уже написан, он увековечен, его не надо даже редактировать, слово не воробей как говориться.
Захочет заказчик перенести эти комменты куда-нибудь в джумлу. И что ты ему скажешь?

DedMorozzz
Цитата
Подскажешь вариант получше?
Он не получше. Он единственный. Хранить в базе девственно чистый текст. Всё остальное от лукавого.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
DedMorozzz
Цитата (twin @ 20.11.2014 - 15:17)
Он не получше. Он единственный. Хранить в базе девственно чистый текст. Всё остальное от лукавого.

Ок. Сохранил Mc`Donalds
Как выдать юзеру Mc`Donalds, когда он в поиске ввёл McDonald`s?

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
sergeiss
Цитата (DedMorozzz @ 20.11.2014 - 16:23)
Ок. Сохранил Mc`Donalds
Как выдать юзеру Mc`Donalds, когда он в поиске ввёл McDonald`s?

Это уже другой вопрос, "как организовать поиск".
Но Николай совершенно прав, что наиболее правильно - это хранить в БД текст в том виде, как он введен. Включая всякие тэги, ВВ-коды и всё остальное. Затем, только при выводе, проводить изменения. Иначе получаем гимор. Может быть не сразу, но получим его потом.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
DedMorozzz
Цитата (sergeiss @ 20.11.2014 - 15:26)
Это уже другой вопрос, "как организовать поиск".

Нет, это не другой вопрос. Это тот же самый
Причина и следствие. Нужно сохранять и выбирать пользовательские данные. Я храню оба варианта, не из-за того, что бы набить базу. А потому что по другому просто нельзя

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
twin
Цитата (DedMorozzz @ 20.11.2014 - 12:23)
Цитата (twin @ 20.11.2014 - 15:17)
Он не получше. Он единственный. Хранить в базе девственно чистый текст. Всё остальное от лукавого.

Ок. Сохранил Mc`Donalds
Как выдать юзеру Mc`Donalds, когда он в поиске ввёл McDonald`s?

Ну во-первых он помоему ищет McDonald`s, а вовсе не Mc`Donalds. Если он ошибся, это другое дело, к теме отношения не имеет. Это морфологические разборы, сфинксы всякие и прочее.

А во-вторых, ответь на контрвопрос. Если я ищу <twin> на англоязычном форуме про близнецов. Сколько результатов будет на выдаче? А мне нужно найти именно в бричках.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
twin
Цитата
А я говорил - не торопись. Попробуй проделать это с преславутым <twin>

А что не так? Не пойму.

$text = '<twin>';
$text = htmlspecialchars($text);
echo htmlspecialchars_decode($text);


В базе вместо <twin> будет &lt;twin&gt;gt;
Поиск тоже через htmlspecialchars работает. И твой запрос <twin> успешно найдёт.
И мой <strong> найдёт. Верстку то не надо искать. Даже если понадобиться искать верстку, можно в поиске не юзать htmlspecialchars. Вообще проблем не вижу. А вот в необработанных данных такое будет невозможно найти.

Цитата
В базе недопустимо. Это допустимо только в HTML. Для того и придумали bb-теги, не от хорошей жизни.

От чего же это не допустимо? что [ b ] , что <b>, базе как то пофиг =)

А современные редакторы типа tinymce или ckeditor не работают с bb кодами. Ну из коробки по крайней мере.

Цитата
Захочет заказчик перенести эти комменты куда-нибудь в джумлу. И что ты ему скажешь?

Я не знаю как коменты хранятся в ждумле, так же не знаю как они храняться в ВасяCMS, в которую мы будем переносить комменты после джумлы.
Но с учетом того что джумла использует как tinymce, так и ckeditor, думаю перенесу без промежуточных скриптов.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
DedMorozzz
Цитата (twin @ 20.11.2014 - 15:29)

Ну во-первых он помоему ищет McDonald`s, а вовсе не Mc`Donalds. Если он ошибся, это другое дело, к теме отношения не имеет. Это морфологические разборы, сфинксы всякие и прочее.

Это сфинксом и ищется. И оба варианта я в базу сфинкса и записываю. Я про мускул ничего не говорил ибо это не важно. База и база
И оба варианта с пользовательскими данными - я про макдональдс - одинаковы. И на запрос "McDonald`s" должно выдать "Mc`Donalds" в том числе.
И вариантов того же макдональда можно придумать штук 10. И если их не будет все выбирать - то на ко чёрт такой поиск. Можно юзера сразу попросить айдишник записи ввести

Цитата (twin @ 20.11.2014 - 15:29)
А мне нужно найти именно в бричках.

Это уже делается точными запросами. В гугле точные поиски делаются двойными кавычками. И то, он спец символы не учитывает
Но в зависимости от задачи, без проблем можно искать только по юзерским данным, не обработанным, но это не убирает подавляющее большинство обычных запросов с разным написанием спец символов

Резюме: Если на конкретном примере (поиск) хранить только юзерские данные - то такой поиск нахрен никому не нужен. Потому изначальный вопрос "как харанить данные" ответ единственный - используется и 1й и 2й вариант.
Когда-то нужен только 2й. Когда-то оба

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
FatCat
Цитата (twin @ 20.11.2014 - 14:41)
Как ты найдешь <twin>? Если брички обрезаны?

Запрос обрабатывается в точности так же, как текст, заносимый в БД.

_____________
Бесплатному сыру в дырки не заглядывают...
Arh
Цитата (FatCat @ 20.11.2014 - 16:47)
Цитата (twin @ 20.11.2014 - 14:41)
Как ты найдешь <twin>? Если брички обрезаны?

Запрос обрабатывается в точности так же, как текст, заносимый в БД.

Аллилуйя smile.gif

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.