如何保护link_to @variable跨站点脚本漏洞



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

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

它们都具有以下共同点:

  • 它们都是link_to标签
  • 它们在类、alt 或标题中都有实例变量属性
  • 实例变量都表示一个活动记录查询包括相关模型
  • 实例变量都是"可注释的"。这描述了用户生成评论的多态关联,类似于此 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 默认转义这些。

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

我无法从您提供的代码中重现任何警告。你使用的是哪个版本的刹车人?实际警告是什么(必要时编辑)?

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

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

编辑

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

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

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

相关内容

  • 没有找到相关文章

最新更新