我的视图中有两段代码:
<%= sanitize('<h3>winter</h3>') %>
<%= '<h3>winter</h3>'.html_safe %>
它们似乎都导致在提供的字符串中编码html标签。 它们之间有什么区别,我应该何时使用?
'.html_safe %>它们似乎都导致在提供的字符串中编码html'/> '.html_safe %>它们似乎都导致在提供的字符串中编码html'/>
我的视图中有两段代码:
<%= sanitize('<h3>winter</h3>') %>
<%= '<h3>winter</h3>'.html_safe %>
它们似乎都导致在提供的字符串中编码html标签。 它们之间有什么区别,我应该何时使用?
这是两种截然不同的方法。
a = a.html_safe
只会标记字符串 a
作为'html_safe'并在之后对其进行处理 (将字符串标记为受信任的安全字符。它将插入到HTML中,而不是
执行额外的逃避。你有责任确保这一点
string不包含恶意内容。这种方法相当于
raw
帮助者的意见。建议您使用 sanitize
代替
这种方法。永远不应该在用户输入上调用它。)。
a.sanitize
另一方面,html将对所有标签进行编码并删除所有未明确允许的属性(如果需要,可以添加/删除允许的标签和属性)。请注意,除非您明确允许使用html-markup,否则默认情况下会对用户输入进行清理 raw
(http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw),顺便说一句,使用 html_safe
把它标记为这样。