【发布时间】:2010-05-16 15:50:20
【问题描述】:
我有一个系统让用户能够发布 cmets。
cmets 被抓取到一个 textarea 中。
我的问题是用 br 标签格式化 cmets 来替换 \n
事实上,我可以做这样的事情
s.gsub(/\n/, '<br />')
但是包含在 rails 中的 xss 保护会转义 br 标签。
所以我可以这样做
s.gsub(/\n/, '<br />').html_safe
但是,所有的标签都被接受,甚至是脚本......导致了很大的安全问题
所以我的问题是:如何安全地用 br 格式化文本?
谢谢
编辑: 现在,我已经添加了这个
def sanitaze
self.gsub(/(<.*?>)/, '')
end
def nl2br
self.sanitaze.gsub(/\n/, '<br />').html_safe
end
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3