正確には、これらの違いがわかりません。私はこれを読みました
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html
しかし、正確な違いはわかりません。誰でも私に違いを教えてもらえますか?
正確には、これらの違いがわかりません。私はこれを読みました
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html
しかし、正確な違いはわかりません。誰でも私に違いを教えてもらえますか?
sanitize
ホワイトリストサニタイザーを使用しています。 strip_tags
すべてのタグを取り除きます。
比較:
[64] pry(main)> sanitize "hello <h1>h1</h1> <b>b</b>"
=> "hello <h1>h1</h1> <b>b</b>"
[65] pry(main)> strip_tags "hello <h1>h1</h1> <b>b</b>"
=> "hello h1 b"
ホワイトリストに登録されたタグを指定しない場合sanitize
、デフォルトで次のタグが許可されます。
[66] pry(main)> ActionView::Base.white_list_sanitizer.allowed_tags.to_a * ', '
=> "strong, em, b, i, p, code, pre, tt, samp, kbd, var, sub, sup,
dfn, cite, big, small, address, hr, br, div, span, h1, h2, h3,
h4, h5, h6, ul, ol, li, dl, dt, dd, abbr, acronym, a, img,
blockquote, del, ins"
ホワイトリストに登録された独自のタグを指定すると、デフォルトのタグが上書きされます。
[67] pry(main)> sanitize "hello <h1>h1</h1> <b>b</b>", tags: %w(b)
=> "hello h1 <b>b</b>"
とのもう 1 つの違いは、一部のタグ、特に タグのコンテンツ (間にあるもの) を削除するsanitize
ことstrip_tags
です。sanitize
<script>
比較:
[68] pry(main)> sanitize "a<script>alet('foo')</script>"
=> "a"
[69] pry(main)> strip_tags "a<script>alet('foo')</script>"
=> "aalet('foo')"
また、sanitize
いくつかの文字に対して html-escape を行いますが、そうでstrip_tags
はありません。
[70] pry(main)> sanitize "< &"
=> "< &"
[71] pry(main)> strip_tags "< &"
=> "< &"
さらに、ネストされたタグの扱いも異なります。以下を比較して、
[73] pry(main)> sanitize "some<<b>script>alert('hello')<</b>/script>", tags: []
=> "some<script>alert('hello')</script>"
[74] pry(main)> strip_tags "some<<b>script>alert('hello')<</b>/script>"
=> "somealert('hello')"