Ruby on rails 如何保护链接到@variable跨站点脚本漏洞

Ruby on rails 如何保护链接到@variable跨站点脚本漏洞,ruby-on-rails,brakeman,Ruby On Rails,Brakeman,我刚刚开始使用brakeman gem来探索我的rails应用程序的安全漏洞 除了几个跨站点脚本警告之外,我已经设法将所有内容整理好 它们都有以下共同点: 它们都是链接到标签的 它们在类、alt或title中都有实例变量 属性 实例变量都表示一个活动记录查询 包括关联模型 实例变量都是“可注释的”。这描述了用户生成的注释的多态关联,与的修订版本的方法类似 e、 g 这是我需要关心/采取行动的事情吗?我认为Rails3.2默认情况下不会出现这些问题 我希望得到建议,帮助我更好地理解这个问题,并

我刚刚开始使用brakeman gem来探索我的rails应用程序的安全漏洞

除了几个跨站点脚本警告之外,我已经设法将所有内容整理好

它们都有以下共同点:

  • 它们都是链接到标签的
  • 它们在类、alt或title中都有实例变量 属性
  • 实例变量都表示一个活动记录查询 包括关联模型
  • 实例变量都是“可注释的”。这描述了用户生成的注释的多态关联,与的修订版本的方法类似
e、 g

这是我需要关心/采取行动的事情吗?我认为Rails3.2默认情况下不会出现这些问题


我希望得到建议,帮助我更好地理解这个问题,并确定我应该采取哪些步骤(如果有的话)。

我无法从您提供的代码中复制任何警告。您使用的是哪种版本的Brakeman?实际警告是什么(根据需要修改)

我怀疑您会收到警告,因为在链接的href值中检测到用户输入。请参阅,以了解有关为什么这可能是危险的更多信息

不幸的是,没有更多的信息,我无法判断这是一个需要纠正的假阳性还是一个合法的警告

编辑:

好的,现在我在使用
@model=@commentable=…
进行测试时看到警告这是Brakeman如何处理分配的问题

如果链接到模型的实例,则不应有任何警告。如果要链接到模型属性,则该属性将计为用户输入


是的,Rails将转义HTML,但它不处理以
javascript:
data:
开头的链接,这两个链接都是
。再次查看错误后,我还注意到它们都是复杂的
includes
语句(即多个模型,其中一些是嵌套的)。而且(也许这就是原因)它们都是“可评论的”。我将更详细地更新我的问题。也许将我的
@model=@commentable=ARquery
重构为两行可以解决这个问题?但我仍然不确定我是否理解为什么这是一个问题。Rails在默认情况下不会转义吗?感谢任何帮助我提高理解力的建议。根据新信息更新答案。看起来分成两行确实解决了这个问题,这是Brakeman中的一个bug。感谢您查看这个Justin。只是想澄清一下,这是否意味着我可以安全地忽略这些警告,或者这是否表示需要采取措施来保护
@commentable
?是的,如果将作业一分为二会使警告消失,那么您可以忽略它们<代码>使用模型链接到
是安全的。
<%= link_to "Click" , :class=> @model.association.attribute, :alt=> @model.association.attribute, :title=> @model.association.attribute, @model.association %>
@model = @commentable = Model.includes(:association1, association2: {:nested-association1, :nested-association2}).find(params[:id])