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”,您可以安全地加入
而不需要
原始

谢谢您的解释。