ビューには 2 つのコードがあります。
<%= sanitize('<h3>winter</h3>') %>
<%= '<h3>winter</h3>'.html_safe %>
そして、どちらも提供された文字列にhtmlタグをエンコードするようです。それらの違いは何ですか?いつどちらを使用する必要がありますか?
ビューには 2 つのコードがあります。
<%= sanitize('<h3>winter</h3>') %>
<%= '<h3>winter</h3>'.html_safe %>
そして、どちらも提供された文字列にhtmlタグをエンコードするようです。それらの違いは何ですか?いつどちらを使用する必要がありますか?
これらは 2 つの非常に異なる方法です。
a = a.html_safe
文字列a
を「html_safe」としてマークし、後でそのように扱います (文字列を信頼できる安全としてマークします。追加のエスケープを実行せずに HTML に挿入されます。文字列に悪意のあるコンテンツが含まれていないことを確認するのはユーザーの責任です。このメソッドは、はraw
ビューのヘルパーと同等
ですsanitize
. このメソッドの代わりに使用することをお勧めします. ユーザー入力で呼び出されることはありません.) .
a.sanitize
一方、すべてのタグを html エンコードし、特に許可されていないすべての属性を削除します (必要に応じて、許可されたタグと属性を追加/削除できます)。raw
ユーザー入力は、 ( http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw ) を使用してhtml マークアップを明示的に許可しない限り、デフォルトでサニタイズされることに注意してくださいhtml_safe
。