5

我刚刚开始使用刹车器 gem 来探索我的 rails 应用程序是否存在安全漏洞。

除了几个跨站点脚本警告之外,我已经设法让一切都变得整洁。

这些都有以下共同点:

  • 它们都是 link_to 标签
  • 它们在类、alt 或 title 属性中都有实例变量
  • 实例变量都代表一个包含关联模型的活动记录查询
  • 实例变量都是“可评论的”。这描述了用户生成评论的多态关联,类似于此 Railscast的修订版本。

例如

<%= 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])

这是我需要关注/采取行动的事情吗?我认为 Rails 3.2 默认会避开这些。

我欢迎提供建议,以帮助我更好地理解这个问题,并确定我应该采取哪些步骤(如果有的话)。

4

1 回答 1

4

我无法从您提供的代码中重现任何警告。你用的是什么版本的刹车?实际的警告是什么(根据需要进行了编辑)?

怀疑您收到警告,因为在链接的 href 值中检测到用户输入。有关为什么这可能很危险的更多信息,请参阅此拉取请求

不幸的是,如果没有更多信息,我无法判断这是需要修复的误报还是合法警告。

编辑

好的,现在我在测试时看到警告@model = @commentable = ...这是 Brakeman 处理分配的问题。

如果您链接到模型的实例,则不应出现警告。如果您链接到模型属性,那么这将被视为用户输入。

是的,Rails 会转义 HTML,但它不处理以 XSS 开头javascript:data:用于 XSS的链接。

于 2012-07-03T22:54:29.287 回答