17

我认为有两段代码:

<%= sanitize('<h3>winter</h3>') %>

<%= '<h3>winter</h3>'.html_safe %>

而且它们似乎都导致在提供的字符串中编码 html 标签。它们之间有什么区别,我什么时候应该使用它们?

4

1 回答 1

24

这是两种截然不同的方法。

a = a.html_safe只会将字符串标记a为 'html_safe' 并在之后将其视为(将字符串标记为受信任的安全。它将被插入到 HTML 中而不会执行额外的转义。您有责任确保字符串不包含恶意内容。此方法相当于 raw视图中的助手。建议您使用sanitize而不是此方法。永远不要在用户输入时调用它。)

a.sanitize另一方面,将对所有标签进行 html 编码并去除所有未明确允许的属性(如果需要,您可以添加/删除允许的标签和属性)。请注意,除非您特别允许使用raw( http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw ) 的 html 标记,否则默认情况下会清理用户输入,顺便说一下,它使用html_safe它来标记它。

于 2015-03-23T08:55:12.460 回答