为什么我们使用html_safe?

时间:2018-08-02 18:45:24

标签: html ruby html5 angular-ui-bootstrap slim-lang

无法理解为什么我们使用html_safe而不是传统的html。

def group(content)
  html = "".html_safe
  html << "<div class='group'>".html_safe
  html << content
  html << "</div>".html_safe
  html
end

2 个答案:

答案 0 :(得分:2)

我同意html_safe在此示例中没有多大意义,因为content_tag会更短,更易于阅读并且会自动转义用户输入:

def group(content)
  content_tag(:div, content, class: 'group')
end

答案 1 :(得分:0)

在Rails HTML ERB模板中,传递给它的字符串都经过HTML转义(以防止Cross Site Scripting注入字符串中的HTML代码,以便攻击者可以在您的网站访问者上执行JavaScript)。但是,有时我们知道我们的字符串对于HTML是安全的,并且不希望对其进行转义,以便可以实际呈现HTML。为此,我们在字符串上调用.html_safe,以将其标记为对HTML呈现安全。通常,您通常希望尽可能避免使用此功能,因为这样可以更容易出错,并使XSS成为您网站上可能的攻击。<​​/ p>