Ruby on Rails Bugs

列举一下 Rails 框架内部程序问题。前两个是我个人的亲身体会,后面两个,相信大家现在都很熟悉了。

Rails version 3.0.12

1. Default layout

需要在 controller 中,显示的声明 layout 的调用。即使父类有声明,子类也需要再次声明。 否则,报如下错误:

ArgumentError in FoolController#index
wrong number of arguments (2 for 1)actionpack (3.0.6)
lib/abstract_controller/layouts.rb:272:in `template_exists?'

Rails 源代码 ,第272行。

if template_exists?("#{_implied_layout_name}", #{_prefix.inspect})

上面的 if 条件,运行时必定报错!下面的语句,同样需要显示指明 layout。

render :template=>template, :layout => "application"

2. Helper all

Rails 3.0 automatic loading for helper :all。原文链接。
项目中存在 helper 方法命名冲突的可能性很大! 简单的解决方法:重新命名,保证不重复命名。 其他替代方法:Decorators etc.

3. Mass assignment vulnerability

黑客,可以很容易的篡改表单提交的数据,而且,程序会真实保存。原文链接。
Rails 3.2 已经完善,需要显示在 model 中声明 attr_accessible , 才能对其赋值, 提高了项目的安全性。

4. Multiple vulnerabilities in parameter parsing in Action Pack

Extremely critical Ruby on Rails bug
Rails这次漏洞有点严重啊
这个漏洞很严重,建议立即升级到下列修复版本:2.3.15, 3.0.19, 3.1.10 or 3.2.11 基本步骤:修改 Gemfile , 然后,执行 bundle update rails

2013-01-13

rocket-wing