Ruby on rails 4 使用rails 4转义html的最佳方法是什么:gsub(';&';';';&';)或CGI.escapeHTML

Ruby on rails 4 使用rails 4转义html的最佳方法是什么:gsub(';&';';';&';)或CGI.escapeHTML,ruby-on-rails-4,html-escape-characters,Ruby On Rails 4,Html Escape Characters,我想对控制器中的数据使用转义html,我找到了两种方法: text.gsub('<', '&lt;').gsub('>', '&gt;') 什么是最好的,为什么?最好的方法可能是将数据分配给实例变量,然后在视图中输出它们,视图将自动处理编码: 控制器: def something @foo = "<test>" end 视图在大多数情况下都是正确的。我不确定最好的方法是什么,但我会注意到第一个选项在很多情况下都是错误的。一个很大的例子是html属性

我想对控制器中的数据使用转义html,我找到了两种方法:

text.gsub('<', '&lt;').gsub('>', '&gt;')

什么是最好的,为什么?

最好的方法可能是将数据分配给实例变量,然后在视图中输出它们,视图将自动处理编码:

控制器:

def something
  @foo = "<test>"
end

视图在大多数情况下都是正确的。

我不确定最好的方法是什么,但我会注意到第一个选项在很多情况下都是错误的。一个很大的例子是html属性中的任何东西,因为它不做任何引号。如果没有解释html,这不是问题。不,我的上下文是相反的。用户发布
,我想禁用HTML并将其保存在bdd中。我想我不明白这个问题。。。这与escapeHTML方法的作用相同(我很高兴,这正是Rails在此上下文中自动调用的方法)。如果用户将其放入并以这种方式输出,它将显示文本,而不是带有runnable脚本的链接。我从post参数(按用户)中获取标记代码,如下图所示,但XSS攻击存在安全问题,因此我希望禁用用户发送的HTML,而不是通过将标记转换为HTML创建的HTML。这个细节不重要,我想我的问题很清楚。
def something
  @foo = "<test>"
end
<%= @foo %>
&lt;test&gt;