如何在RubyonRails中清理用户生成的html代码
我将用户生成的html代码存储在数据库中,但是有些代码被破坏了(没有结束标记),因此当这些代码破坏整个页面的呈现时 我如何使用RubyonRails防止这种行为如何在RubyonRails中清理用户生成的html代码,html,ruby-on-rails,sanitization,Html,Ruby On Rails,Sanitization,我将用户生成的html代码存储在数据库中,但是有些代码被破坏了(没有结束标记),因此当这些代码破坏整个页面的呈现时 我如何使用RubyonRails防止这种行为 谢谢我的google fu显示出奇的少点击,但这里是最热门的一个:) 尝试在erb模板中使用h()escape函数进行清理。这应该可以做到这一点使用合适的HTML解析器来实现这一点并不难,例如,它可以作为处理方法的一部分执行清理: bad_html = '<div><p><strong>bad<
谢谢我的google fu显示出奇的少点击,但这里是最热门的一个:)
尝试在erb模板中使用h()escape函数进行清理。这应该可以做到这一点使用合适的HTML解析器来实现这一点并不难,例如,它可以作为处理方法的一部分执行清理:
bad_html = '<div><p><strong>bad</p>'
puts Nokogiri.fragment(bad_html).to_s
# <div><p><strong>bad</strong></p></div>
bad\u html='bad'
将Nokogiri.fragment(坏的html)
#坏的
正确解析后,您应该拥有完全平衡的标记。签出,一个基于Nokogiri的HTML清理库。这还将删除可能在页面上插入恶意脚本或嵌入对象的潜在不安全HTML。您还应该清除样式块,这可能会弄乱页面上的标记。这只会转义HTML,不会修复它
x
只是变成bx
而不是x