我需要显示用户评论,省略HTML以防止攻击(当自定义样式元素可以作为评论发布时) 唯一的,我想通过显示保持 - 是标签
我以这种方式显示评论:
<p class="content"><%=h comment.content.gsub(/\n/,"<br/>") %></p>
注释被禁止保存在数据库中而没有任何标记
行结尾转换为“br”标记
但是,当然,由于 = h 输出模式,它们已经消失了。
有没有办法可以杀死所有的html,除了“br”标签?
答案 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攻击是安全的,您将能够控制允许的标记列表