Rails 5.0.0.beta1 - 从未过滤的请求参数生成 URL 是不安全的

Posted

技术标签:

【中文标题】Rails 5.0.0.beta1 - 从未过滤的请求参数生成 URL 是不安全的【英文标题】:Rails 5.0.0.beta1 - Generating an URL from non sanitized request parameters is insecure 【发布时间】:2016-03-28 14:34:20 【问题描述】:

我们正在从 Rails 4.2.5 升级到 5.0.0.beta1

在测试时,我们希望看到像以前一样使用分页链接呈现的索引视图。 但是我们现在得到一个 ArgumentError 错误页面,例如:

ArgumentError in Transactions#index 
/app/views/kaminari/_paginator.html.erb where line #10 raised:


<%= paginator.render do -%>

Generating an URL from non sanitized request parameters is insecure!

Application Trace | Framework Trace | Full Trace

app/views/kaminari/_paginator.html.erb:10:in block in _app_views_kaminari__paginator_html_erb___4026289994022119719_69904100316060' app/views/kaminari/_paginator.html.erb:9:in_app_views_kaminari__paginator_html_erb___4026289994022119719_69904100316060'
app/views/transactions/index.html.erb:2:in `_app_views_transactions_index_html_erb__422882858554400818_60602560'

kaminari 提出了一个问题

进一步调查这里是新的 Rails 5.0.0.beta1 代码,现在会引发错误:

将此添加到 config/application.rb '修复'它,但不是一个好主意:

config.action_controller.permit_all_parameters = true

添加这个并不能解决问题,不知道为什么:

config.action_controller.always_permitted_parameters =  [:current_page, :page, :total_pages, :per_page, :remote, :paginator]

【问题讨论】:

【参考方案1】:

这似乎已在 github master 分支中修复,所以现在在您的 gem 文件中指定:

gem 'kaminari', :git => "git://github.com/amatsuda/kaminari.git", :branch => 'master'

【讨论】:

这行得通,谢谢。 gem "kaminari", github: "amatsuda/kaminari" 的较短版本。 Kaminari 0.17.0 发布了这个修复:github.com/amatsuda/kaminari/blob/master/CHANGELOG.rdoc#0170

以上是关于Rails 5.0.0.beta1 - 从未过滤的请求参数生成 URL 是不安全的的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix 5.0.0beta1版本初体验

如何过滤rails中的参数?

在 Rails 中过滤敏感信息(参数)的测试

Rails - 过滤多对多

rails:在过滤器之前放置和中断

Rails 3:过滤后模型导致无限循环