Yanıtlar:
Bir strip_tags
yöntem var ActionView::Helpers::SanitizeHelper
:
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
Düzenleme: Metni değer özniteliğinin içine almak için, bunu dizeden çıkarmak için bir Xpath ifadesi ile Nokogiri gibi bir şey kullanabilirsiniz.
Bunu modelde kullanmak istiyorsak
ActionView::Base.full_sanitizer.sanitize(html_string)
"strip_tags" yöntemindeki kod budur
require 'html/sanitizer'
kendi dezenfektanınızı uygulayabilir ve uygulayabilirsiniz HTML::FullSanitizer.new
.
require 'html/sanitizer'
hatayı artırıyor, bu yüzden kullanmam gerekiyor: Rails::Html::FullSanitizer.new
( edgeapi.rubyonrails.org/classes/HTML/… )
Evet, buna seslenin: sanitize(html_string, tags:[])
ActionView::Base.full_sanitizer.sanitize(html_string)
Beyaz etiket ve nitelik listesi aşağıdaki gibi belirtilebilir
ActionView::Base.full_sanitizer.sanitize(html_string, :tags => %w(img br p), :attributes => %w(src style))
Yukarıdaki ifade img , br ve p etiketlerine ve src ve style niteliklerine izin verir .
Hem HTML hem de XML (hem belgeler hem de dize parçaları) için uygun olduğu için Loofah kitaplığını kullandım. Html dezenfektan mücevherinin arkasındaki motordur. Kullanmanın ne kadar basit olduğunu göstermek için kod örneğini yapıştırıyorum.
unsafe_html = "ohai! <div>div is safe</div> <script>but script is not</script>"
doc = Loofah.fragment(unsafe_html).scrub!(:strip)
doc.to_s # => "ohai! <div>div is safe</div> "
doc.text # => "ohai! div is safe "
Buna ne dersin?
white_list_sanitizer = Rails::Html::WhiteListSanitizer.new
WHITELIST = ['p','b','h1','h2','h3','h4','h5','h6','li','ul','ol','small','i','u']
[Your, Models, Here].each do |klass|
klass.all.each do |ob|
klass.attribute_names.each do |attrs|
if ob.send(attrs).is_a? String
ob.send("#{attrs}=", white_list_sanitizer.sanitize(ob.send(attrs), tags: WHITELIST, attributes: %w(id style)).gsub(/<p>\s*<\/p>\r\n/im, ''))
ob.save
end
end
end
end
Rails::Html::FullSanitizer.new
bir beyaz liste belirtmek istemiyorsanız.
text.strip
işe yarıyor