alex4answ
@alex4answ

Фильтрация введеных данных при записи в бд или при выводе?

Добрый вечер, не могу решить как правильно сделать.

Есть форма, без редактора и всего остального, и 1 модель которая сохраняет введенные данные.
Эти данные с формы выводятся в 2-5 шаблонах.

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

И у меня всвязи с этим вопрос возник, не проще ли мне Html::encode (htmlspecialchars) использовать при записи в бд, а не в каждом шаблоне при выводе?

В чем собственно разница и какие подводные камни при этом есть?
Я бы сделал HtmlPurifier (strip_tags) при записи, но мне не нужно чтобы "<такой текст>" удалился.

Как правильно фильтровать данные в случае если запись в бд в 1 месте, а вывод в нескольких шаблонах?
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
Для начала, фильтр при записи спасает от sql-инъекции.
Во-вторых, чтение обычно преобладает над записью, так что лучше фильтровать при записи.
С другой стороны, фильтруя запись в бд, вы лишаетесь первичного формата. И если вы измените фильтр, то данные перекодировать уже не получится.
Ну и такой момент: если пользователь редактирует свою запись, то ему нужно выдавать именно то, что он ввёл.
Вывод: частично нужно фильтровать конвертировать при записи, частично фильтровать при выводе, а при редактировании возвращать исходный вариант.
Ответ написан
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Для этого в yii есть правила валидации, в которых можно указать, какой тип ожидается.
Так же, цитирую

Все SQL-запросы фреймворк защищает подготовленными выражениями PDO, если сами не сочиняете запросы конкатенацией. Проблем с этим нет.

А вот выводить пользовательские данные через Html::encode();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы