我有一个系统供用户发表评论.
评论被抓到一个文本区域.
我的问题是用br标签格式化注释以替换\n
事实上,我可以做那样的事情
s.gsub(/\n/, '
')
但是包含在rails中的xss保护逃脱了br标签.
所以我能做到这一点
s.gsub(/\n/, '
').html_safe
但是,所有标签都被接受甚至脚本....导致一个很大的安全问题
所以我的问题是:如何安全地使用br格式化文本?
谢谢
编辑:目前,我已经添加了这个
def sanitaze self.gsub(/(<.*?>)/, '') end def nl2br self.sanitaze.gsub(/\n/, '
').html_safe end
Jim.. 55
正如Ryan Bigg所说,这simple_format
是工作的最佳工具:它比其他解决方案更安全,更整洁.
所以@var:
<%= simple_format(@var) %>
如果您需要清理文本以删除HTML标记,则应在将其传递给之前执行此操作simple_format
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
正如Ryan Bigg所说,这simple_format
是工作的最佳工具:它比其他解决方案更安全,更整洁.
所以@var:
<%= simple_format(@var) %>
如果您需要清理文本以删除HTML标记,则应在将其传递给之前执行此操作simple_format
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format