Что делать с данными, приходящими от пользователя?

Статус
В этой теме нельзя размещать новые ответы.

svetasmirnova

маленький монстрик
потому что
1. то, что в скобках, можно в поле города записать
2. человеку удобнее записывать телефон привычным для себя образом
 

_RVK_

Новичок
Ладно, думаю спорно, но неочивидно. Пока trim(потому как нафик нам пробелы) и резка для удобства поиска. Все остальное пишем без изменений.
Хотелось бы услышать иное мнение.
 

N9

Новичок
только plain text и ничего более - фильтрация везде и всего, замена введенных данных неким подобием bb-кода
 

Vladson

Сильнобухер
Данные введённые пользователем надо...

1 - Проверять соответсвует ли их тип тому что должно быть.
(т.е если нужны только цифры то не пускать буквы)
2 -Если да то хранить их в базе в абсолютной точности
(за исключением служебных символов чтоб избежать SQL-injection)

В результе это даёт возможность предоставлять эти данные обратно пользователю в любом виде (в чистом, в XLS, в CSV, в HTML, в XML и.т.д...)
 

_RVK_

Новичок
N9
Аргументация.

Vladson
То есть ты проеряешь введен ли HTML?
 

SelenIT

IT-лунатик :)
plain text и ничего более - ... замена ... данных неким подобием bb-кода
Хм... Всю жизнь воспринимаю bb-код и его подобия как языки разметки, а-ля (X)HTML, но в отличие от него - нестандартные. Ну неужели, неужели эти нестандартные языки позволяют сделать что-то, что невозможно стандартными средствами?
 

Vladson

Сильнобухер
_RVK_
Ни в коем случае !!!
Я проверяю не пытаются ли они в поле возраст ввести "qwerty", а текстовые поля (текст_новости, текст_каментов) я пропуская полностью в базу, а уже при выводе на страницу перегоняю в нужный формат (nl2br и.т.д. в зависимости от того что хотим получить)
 

N9

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

texrdcom

Новичок
Все зависит от приложения в котором и для которого будут использоваться водимые данные!
Если например для форума можно выкидывать
любой html код с сообщений php код и сохранять один текст,
а код давать водить толкьо через bb, но по идеи это все зависит от требований так что тема без почвенная!.
 

SelenIT

IT-лунатик :)
Осмелюсь изложить свое видение вопроса. Можно выделить две группы подходов, в пределе сводимых к следующим крайностям:

1) В базе может храниться абсолютно все. При вводе защищаемся от injections и только. При выводе действуем по сиутации и выводим это все безопасно.

2) В базе может храниться только то, что предусмотрено логикой приложения. При вводе либо просто не пускаем ничего, кроме дозволенного, либо нещадно выжигаем все неподходящее каленым железом. При выводе действуем однотипно и выводим это все красиво и быстро (безопасно получается само по построению).

На мой взгляд, оба подхода имеют право на жизнь - в зависимости от условий задачи (как справедливо заметил texrdcom). Для сообщений в гостевой я бы выбрал первый подход, а для кратких описаний товаров в магазине - второй.

И напоследок. По-моему, эта тема напрямую затрагивает извечную проблему разделения данных и представления. Так вот IMHO: если текстовые данные и любые команды форматирования (будь то HTML, bbcode или что угодно еще) хранятся вместе - это уже не plain text, а одно из представлений смеси данных с оформлением. От замены одного представления (напр., HTML) на другое (напр. bb-теги) данные от оформления волшебным образом не отделятся. К тому же, если тот же XHTML легко преобразовать в HTML с ограниченным набором тегов, plaintext или любой XML-based формат лишь стандартными функциями PHP, то bb-код везде придется хитро парсить регулярками.

Последний тезис явно спорный, но мой личный опыт его пока не опроверг...
 

Vladson

Сильнобухер
Да, bb-код везде придется хитро парсить регулярками,
однако бывают случаи (вставка картинок, цитат итд)
когда это самый простой выход

bbcode это именно тот "псевдо-стандарт" который имеет простоту и гибкость plaintext и возможности HTML и легко преобразовывается в тот же plaintext, HTML, XHTML, RSS и.т.д
 

SiMM

Новичок
Vladson > хранить их в базе в абсолютной точности (за исключением служебных символов чтоб избежать SQL-injection)
С этого места поподробнее. По вашему, если хранить в базе DELETE - то вот-вот её злобные хацкеры поломают?

N9 > я настолько привык к этому способу, что мне уже сложно уже отказаться от него
По Вашему, Вы привели разумный аргумент?

Vladson > Да, bb-код везде придется хитро парсить регулярками,
Но не по три же раза (при вводе в базу, выводе для редактирования и выводе для просмотра), как некоторые это делают.
 

Vladson

Сильнобухер
SiMM
>>>С этого места поподробнее
(просто вырозился не так, я не спал 2-е суток и немного ещё и напился, по этому трудно точно объяснить то что думаю)
Я не про DELETE я про слешение кавычек (и то не всех) при вставке данных в тело запроса, то есть это не относится к хранению в базе.

>>>Но не по три же раза
Ясное дело не три, в базу (именно не в запрос как это делают многие начинающие "гении" а в базу) текст идёт чистым, а уже при выводе в браузер(или ещё куда) парсится так как это надо в каждом конкретном случае...
 

_RVK_

Новичок
Давайте не отклоняться на BBcode. Хорошо, вырезать HTML теги есть смысл, иногда, в зависимости от логики. А есть ли смысл перед добавлением в БД делать htmlspecialchars? И в каких случаях?
 

zarus

Хитрожопый макак
ИМХО. Чисто с точки зрения нагрузки на сам сервер.
1. Большая часть запросов пользователей - это просмотр сайта. Каждый раз парсить получаемый текст - это пожирание процессорного времени. При большом количестве пользователей - это "смерть".
2. Редактирование, если оно не на форуме, используется гораздо реже, чем просмотр. Здесь можно пожертвовать скоростью ре-парсинга тегов.
А то, что в базе будет храниться на 3 Кб больше из-за того, что все < заменили на &lt; лично для меня не проблема.
 

SiMM

Новичок
> А то, что в базе будет храниться на 3 Кб больше из-за того, что все < заменили на &lt; лично для меня не проблема.
Ну так храни два вида - нормальный и специальнопредназначенный для поиска, откуда выкинуто всё лишнее.
 

master_x

Pitavale XXI wieku
данные надо хранить в том виде, в котором они пришли от пользователя. безо всяких изменений. помнится по этому поводу меня раз и навсегда очень хорошо ткнули SiMM и Фанат. но в том случае, когда я использовал htmlspecialchars именно приложение позволяло это делать
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху