Ruby on rails Rails:在视图中这样做安全吗?
我有一个带有属性Ruby on rails Rails:在视图中这样做安全吗?,ruby-on-rails,ruby,security,Ruby On Rails,Ruby,Security,我有一个带有属性title(string)的模型标签 标记属于带有的模型文档,具有多个:通过关联 在文档#显示视图中,我需要显示与该文档关联的所有标记,因此我需要: %p= raw @document.tags.map{|t| link_to t.title.prepend('#'), t}.join(', ') 考虑到用户可以创建标签,这样安全吗 如果不安全,我如何才能达到同样的效果 谢谢。一般来说,所有逻辑(或尽可能多的逻辑)都应该移到帮助器或模型中。我不会说这是“安全的”或“不安全的”,
title(string)
的模型标签
标记
属于带有的模型文档
,具有多个:通过关联
在文档#显示视图中,我需要显示与该文档关联的所有标记,因此我需要:
%p= raw @document.tags.map{|t| link_to t.title.prepend('#'), t}.join(', ')
考虑到用户可以创建标签,这样安全吗
如果不安全,我如何才能达到同样的效果
谢谢。一般来说,所有逻辑(或尽可能多的逻辑)都应该移到帮助器或模型中。我不会说这是“安全的”或“不安全的”,但在一般的良好实践中是这样做的。是的,标签的标题在成为链接内容之前将被转义,因此即使其中有HTML,也会被呈现,而不是原始输出。这里不转义的输出是由连接产生的字符串,这很好。在这种情况下,它是安全的,因为链接到将转义它的参数,但是为什么要冒险(可能在几个月内修改块的内部,等等),使用安全连接
:
%p= safe_join @document.tags.map{|t| link_to t.title.prepend('#'), t}, ', '
或者使用我的“gem”,您可以安全地加入而不需要原始谢谢您的解释。