Для введенных пользователем данных Я использую подход к его дезинфекции перед сохранением, чтобы удалить любой html или что-нибудь вредоносное (т. Е. Теги).Рельсы, дезинфицирующие пользовательский ввод
У меня есть before_validation
обратного вызова:
before_validation :sanitize_fields
def sanitize_fields
full_sanitizer = Rails::Html::FullSanitizer.new
white_list = Rails::Html::WhiteListSanitizer.new
# Only text allowed
self.fname = full_sanitizer.sanitize(self.fname)
self.lname = full_sanitizer.sanitize(self.lname)
self.company = full_sanitizer.sanitize(self.company)
# Some HTML Allowed
self.description = white_list.sanitize(self.description)
end
Проблема я встречая что при сохранении что-то вроде «Смит & Company» в качестве имени она хранится в БД, как Smith & Company
. Не проблема сама по себе, но затем она также отображается как Smith & Company
в виде редактирования формы, которая кажется смешной и запутанной для конечного пользователя.
Есть ли лучший способ, чем подход, который я принимаю? Это «пахнет» неправильно для меня.
Спасибо!
Вы не должны так беспокоиться об удалении тегов. Если пользователь вводит «» 'в поле, они ожидают увидеть теги, отображаемые как текст –
meagar
Я работал над smth, как это, и закончил с MarkDown. Гораздо холоднее и чище. – 7urkm3n