如何在rails上的ruby中清理用户生成的html代码

时间:2010-10-05 13:49:48

标签: html ruby-on-rails sanitization

我将用户生成的html代码存储在数据库中,但是有些代码被破坏了(没有结束标记),所以当这段代码搞乱了整个页面渲染时。

如何在轨道上使用ruby来防止这种行为。

由于

4 个答案:

答案 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显然出现了很少的点击量,但这里是最高点:)

Valid Well-formed HTML

答案 2 :(得分:0)

尝试在erb模板中使用h()转义函数进行清理。那应该是诀窍

答案 3 :(得分:0)

查看Loofah,一个基于Nokogiri的HTML清理库。这还将删除可能不安全的HTML,这些HTML可能会在页面上注入恶意脚本或嵌入对象。您还应该清除样式块,这可能会弄乱页面上的标记。