【问题标题】:Append safe HTML to unsafe HTML in Rails 3.2在 Rails 3.2 中将安全的 HTML 附加到不安全的 HTML
【发布时间】:2013-03-13 12:06:39
【问题描述】:
假设我有,
<%= @order.shipping.address1 + '<br />' unless @order.shipping.address1 %>
<%= @order.shipping.address2 + '<br />' unless @order.shipping.address2 %>
如何返回带有默认标签剥离的变量,并将“
”打印为 html_safe?
大概,包装在 中会引发安全问题,因为变量没有被剥离 html。
【问题讨论】:
标签:
html
ruby-on-rails
ruby
ruby-on-rails-3
ruby-on-rails-3.2
【解决方案1】:
您不想使用 raw 或 html_safe 之类的东西,因为正如您所说的那样,它会在地址字段中打开漏洞。
你可以像这样重写它:
<% unless @order.shipping.address1 %>
<%= @order.shipping.address1 %>
<br />
<% end %>
<% unless @order.shipping.address2 %>
<%= @order.shipping.address2 %>
<br />
<% end %>
但我会考虑使用 html/css 而不是添加断线。用 div 包围它实际上会使下一个元素出现在下一行,因为 div 是 block element 并因此创建一个换行。
查看:
<% unless @order.shipping.address1 %>
<div>
<%= @order.shipping.address1 %>
</div>
<% end %>
<% unless @order.shipping.address2 %>
<div>
<%= @order.shipping.address2 %>
</div>
<% end %>
如果您需要进一步的样式,您可以添加一个类并使用 css 来设置宽度、高度和其他内容。