猿问

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

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

假设我有以下字符串

@x = "<a href='#'>Turn me into a link</a>"

在我看来,我希望显示一个链接。也就是说,我不希望@x中的所有内容都被转义并显示为字符串。使用

<%= raw @x %><%= h @x %><%= @x.html_safe %>

?


沧海一幻觉
浏览 493回答 3
3回答

大话西游666

我认为有必要重复一遍:html_safe是吗?不HTML-转义你的字符串。实际上,它将防止您的字符串被转义。<%=&nbsp;"<script>alert('Hello!')</script>"&nbsp;%>将:&lt;script&gt;alert(&#x27;Hello!&#x27;)&lt;/script&gt;进入您的HTML源代码(Yay,非常安全!),同时:<%=&nbsp;"<script>alert('Hello!')</script>".html_safe&nbsp;%>将弹出警报对话框(您确定这是您想要的吗?)所以你可能不想打电话html_safe在任何用户输入的字符串上。

波斯汪

区别在于Rails‘html_safe()和raw()..叶胡达·卡茨(Yehuda Katz)在这方面发表了一篇很棒的文章,它可以归结为:def&nbsp;raw(stringish) &nbsp;&nbsp;stringish.to_s.html_safeend是,raw()是个包装器html_safe(),这将强制输入字符串,然后调用html_safe()在上面。情况也是如此raw()是模块中的助手,而html_safe()是String类上的一个方法,它生成一个新的ActiveSupport:SafeBuffer实例,该实例具有@dirty旗子在里面。参考“Rails的html_security与RAW".
随时随地看视频慕课网APP

相关分类

Ruby
我要回答