省略HTML但保留在rails中的标签

时间:2010-07-19 18:07:28

标签: ruby-on-rails formatting view

我需要显示用户评论,省略HTML以防止攻击(当自定义样式元素可以作为评论发布时) 唯一的,我想通过显示保持 - 是标签

我以这种方式显示评论:

<p class="content"><%=h comment.content.gsub(/\n/,"<br/>") %></p>

注释被禁止保存在数据库中而没有任何标记

行结尾转换为“br”标记

但是,当然,由于 = h 输出模式,它们已经消失了。

有没有办法可以杀死所有的html,除了“br”标签?

2 个答案:

答案 0 :(得分:4)

您可以使用仅保留指定HTML标记的sanitize

<%= sanitize comment.content.gsub(/\n/,"<br/>"), :tags => ['br'] %>

或(在您的情况下最好)更改两者的顺序并自己执行html_escape

<%= html_escape(comment.content).gsub(/\n/,"<br/>") %>

答案 1 :(得分:0)

我建议使用white_list插件。它对XSS攻击是安全的,您将能够控制允许的标记列表