我遇到一个奇怪的问题,用户可以输入以下文字
测试'< 3'
并输出为
测试'< 3>
在输出中我使用的是white_list,存储在数据库中的值是:
'测试''< 3'''
什么可能导致输出认为它是某种类型的标签并试图关闭它(这对我来说就是这样)。
谢谢!
答案 0 :(得分:2)
Ruby中的特殊字符,例如&,<和@有时会被误解。尝试在.rhtml页面中使用“h”方法。
<strong><%= h("This is a quick Test'<3'.") %></strong>
将输出:
<strong>This is a quick Test'<3'.</strong>
因此,您的浏览器会将其解释为:
这是一个快速测试'&lt; 3'。
(我还是相对较新的Ruby,所以我愿意纠正!)