Фильтрация введеных данных при записи в бд или при выводе?
Добрый вечер, не могу решить как правильно сделать.
Есть форма, без редактора и всего остального, и 1 модель которая сохраняет введенные данные.
Эти данные с формы выводятся в 2-5 шаблонах.
У меня только 1 место, которое может сохранить данные из формы в бд, то есть нигде больше нет записи.
И у меня всвязи с этим вопрос возник, не проще ли мне Html::encode (htmlspecialchars) использовать при записи в бд, а не в каждом шаблоне при выводе?
В чем собственно разница и какие подводные камни при этом есть?
Я бы сделал HtmlPurifier (strip_tags) при записи, но мне не нужно чтобы "<такой текст>" удалился.
Как правильно фильтровать данные в случае если запись в бд в 1 месте, а вывод в нескольких шаблонах?
Для начала, фильтр при записи спасает от sql-инъекции.
Во-вторых, чтение обычно преобладает над записью, так что лучше фильтровать при записи.
С другой стороны, фильтруя запись в бд, вы лишаетесь первичного формата. И если вы измените фильтр, то данные перекодировать уже не получится.
Ну и такой момент: если пользователь редактирует свою запись, то ему нужно выдавать именно то, что он ввёл. Вывод: частично нужно фильтровать конвертировать при записи, частично фильтровать при выводе, а при редактировании возвращать исходный вариант.
dollar, да, я понимаю что иногда нужно сохранить первозданность - например при использовании редактора, но в моем случае это просто поле ввода текста, никакого редактора, выходит при записи форматировать - дешевле
slo_nik , да, я вкурсе что в yii есть валидация и запросы защищены, мой вопрос слегка в другом, Просто я могу где-то забыть поставить encode при выводе, потому может быть проще сразу при записи в бд кодировать все