我正在尝试在<p>
元素中显示数据库中字段的内容。在html.erb模板中,代码如下所示:
<p><%= front.gsub(/(\r)?\n/, "<br>") %></p> ...
我遇到的问题是为了逃避中断,我必须在上面的gsub末尾应用.html_safe
方法,但这样做会打开整个应用程序来进行XSS攻击。我怎样只允许转义中断?
答案 0 :(得分:8)
您可以使用simple_format
方法。
<%= simple_format(front) %>
更多此处=&gt; http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
答案 1 :(得分:2)
这是基于simple_format
助手。我们可以使用sanitize
删除允许XSS攻击的错误标记。
<%= sanitize(front).gsub(/(\r)?\n/, "<br/>").html_safe %>
如果要在使用<br>
替换新行之前删除所有HTML标记,也可以使用strip_tags。
<%= strip_tags(front).gsub(/(\r)?\n/, "<br/>").html_safe %>
答案 2 :(得分:2)
您是否考虑过将文字包装成<pre>
- 标签?这将保持基本格式(换行符,空格......)。