17

ビューには 2 つのコードがあります。

<%= sanitize('<h3>winter</h3>') %>

<%= '<h3>winter</h3>'.html_safe %>

そして、どちらも提供された文字列にhtmlタグをエンコードするようです。それらの違いは何ですか?いつどちらを使用する必要がありますか?

4

1 に答える 1

24

これらは 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

于 2015-03-23T08:55:12.460 に答える