正是我不知道這些之間的區別。 我讀這清潔和strip_tags導軌之間的區別
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html
,但沒有得到確切的差異。 任何人都可以讓我知道區別?
正是我不知道這些之間的區別。 我讀這清潔和strip_tags導軌之間的區別
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html
,但沒有得到確切的差異。 任何人都可以讓我知道區別?
隨着清理,你可以允許一些HTML標籤或類,strip_tags不能。它做同樣的事情。檢查代碼https://github.com/rails/rails/blob/76a0b1028e312b6c3c00a50b4a09d68c23b5e713/actionview/lib/action_view/helpers/sanitize_helper.rb#L80
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>"
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轉義一些字符,但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')"
那意味着strip_tags會刪除所有東西? 並在'sanitize'有一個條款限制。 – 2014-11-05 14:20:51
是的,你有更多關於http://api.rubyonrails.org/的信息。 – 2014-11-05 14:31:09