ユーザが入力したデータに対しては、htmlや悪意のあるもの(タグ)を取り除くために保存する前に、サニタイズする方法をとっています。ユーザ入力をサニタイズするRails
私は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
私が遭遇しています問題は、名前として「スミス&会社」のようなものを保存するときに、それがSmith & Company
として、DBに格納されていることです。それ自体は問題ではありませんが、フォームの編集ビューにはSmith & Company
と表示されますが、これはエンドユーザーにとって面白く混乱しているようです。
私が取っているアプローチよりも良い方法がありますか?これは私に間違っている "におい"。
ありがとうございます!
タグを取り除くことを心配するべきではありません。ユーザーがフィールドに「 sure 」と入力すると、タグ –
meagar
としてレンダリングされたタグが表示されることを期待しています。このようにsmthで作業していて、MarkDownで終わりました。ずっとクーラーとクリーナー。 – 7urkm3n