Antworten:
Es gibt eine strip_tags
Methode in ActionView::Helpers::SanitizeHelper
:
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
Bearbeiten: Um den Text in das value-Attribut aufzunehmen, können Sie etwas wie Nokogiri mit einem Xpath-Ausdruck verwenden, um dies aus der Zeichenfolge herauszuholen.
Wenn wir dies im Modell verwenden wollen
ActionView::Base.full_sanitizer.sanitize(html_string)
Dies ist der Code in der Methode "strip_tags"
require 'html/sanitizer'
und instanziieren Sie Ihr eigenes Desinfektionsmittel mit HTML::FullSanitizer.new
.
require 'html/sanitizer'
löst Fehler aus, so dass ich verwenden muss: Rails::Html::FullSanitizer.new
( edgeapi.rubyonrails.org/classes/HTML/… )
Ja, nennen Sie das: sanitize(html_string, tags:[])
ActionView::Base.full_sanitizer.sanitize(html_string)
Eine weiße Liste von Tags und Attributen kann wie folgt angegeben werden
ActionView::Base.full_sanitizer.sanitize(html_string, :tags => %w(img br p), :attributes => %w(src style))
Die obige Anweisung erlaubt die Tags img , br und p sowie die Attribute src und style .
Ich habe die Loofah-Bibliothek verwendet, da sie sowohl für HTML als auch für XML (sowohl Dokumente als auch Zeichenfolgenfragmente) geeignet ist. Es ist der Motor hinter dem HTML-Desinfektionsjuwel. Ich füge einfach das Codebeispiel ein, um zu zeigen, wie einfach es zu verwenden ist.
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 "
Wie wäre es damit?
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
wenn Sie keine Whitelist angeben möchten.
text.strip
funktioniert