Railsのupdate_attributesが強力な話
2012年3月5日(月曜日)
Railsのupdate_attributesが強力な話
更新: 2012年3月12日22時15分頃
こんな話が……「github の mass assignment 脆弱性が突かれた件 (blog.sorah.jp)」。
update_attributes とは: ActiveRecord のモデルで、カラム名がキーとなった Hash を渡す事でデータを更新できるメソッド。foo.update_attributes(:title => "New Title") のように使います。 scaffold で生成されたコントローラの update アクションなどで使われていて、scaffold では update_attributes(params[:foo]) のようにパラメータが直接渡されています。
ここでのparamsは、クエリ文字列、あるいはPOSTされたクエリをそのまま格納したものです。scaffold (Railsが最初にひな形を自動生成する機能) では、外部から受け取ったクエリをそのまま渡すコードになっていて、書き換えずにそのまま使うとまずいことが起きるという話ですね。
で、実際にGitHubがやってしまっていたと。
ひとまずはプログラマが気をつければ良いという話ではあるのですが、scaffoldのままだと駄目というのはなんとも……。要注意ですね。
- 「Railsのupdate_attributesが強力な話」にコメントを書く
- 前(古い): PASMO履歴照会サービス停止
- 次(新しい): SVGのテキストとMedia Queries