为了账号安全,请及时绑定邮箱和手机立即绑定

原始vs.html_security vs.h以取消转义html。

原始vs.html_security vs.h以取消转义html。

沧海一幻觉 2019-06-24 10:31:54
原始vs.html_security vs.h以取消转义html。假设我有以下字符串@x = "<a href='#'>Turn me into a link</a>"在我看来,我希望显示一个链接。也就是说,我不希望@x中的所有内容都被转义并显示为字符串。使用<%= raw @x %><%= h @x %><%= @x.html_safe %>?
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

我认为有必要重复一遍:html_safe是吗?HTML-转义你的字符串。实际上,它将防止您的字符串被转义。

<%= "<script>alert('Hello!')</script>" %>

将:

&lt;script&gt;alert(&#x27;Hello!&#x27;)&lt;/script&gt;

进入您的HTML源代码(Yay,非常安全!),同时:

<%= "<script>alert('Hello!')</script>".html_safe %>

将弹出警报对话框(您确定这是您想要的吗?)所以你可能不想打电话html_safe在任何用户输入的字符串上。


查看完整回答
反对 回复 2019-06-24
?
波斯汪

TA贡献1811条经验 获得超4个赞

区别在于Rails‘html_safe()raw()..叶胡达·卡茨(Yehuda Katz)在这方面发表了一篇很棒的文章,它可以归结为:

def raw(stringish)

  stringish.to_s.html_safeend

是,raw()是个包装器html_safe(),这将强制输入字符串,然后调用html_safe()在上面。情况也是如此raw()是模块中的助手,而html_safe()是String类上的一个方法,它生成一个新的ActiveSupport:SafeBuffer实例,该实例具有@dirty旗子在里面。

参考“Rails的html_security与RAW".


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 487 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信