我将用户生成的html代码存储在数据库中,但是有些代码被破坏了(没有结束标记),所以当这段代码搞乱了整个页面渲染时。
如何在轨道上使用ruby来防止这种行为。
由于
答案 0 :(得分:2)
使用适当的HTML解析器(例如Nokogiri)执行此操作并不太难,它可以执行清理作为处理方法的一部分:
bad_html = '<div><p><strong>bad</p>'
puts Nokogiri.fragment(bad_html).to_s
# <div><p><strong>bad</strong></p></div>
正确解析后,您应该拥有完全平衡的标签。
答案 1 :(得分:0)
我的google-fu显然出现了很少的点击量,但这里是最高点:)
答案 2 :(得分:0)
尝试在erb模板中使用h()转义函数进行清理。那应该是诀窍
答案 3 :(得分:0)
查看Loofah,一个基于Nokogiri的HTML清理库。这还将删除可能不安全的HTML,这些HTML可能会在页面上注入恶意脚本或嵌入对象。您还应该清除样式块,这可能会弄乱页面上的标记。