Rails New Releases: 2.3.11 and 3.0.4

Riding Rails: New Releases: 2.3.11 and 3.0.4


新バージョンがリリースされました。
bug fixと脆弱性対策ですが、strongly という表記を使って、upgradeを促しています。
xss / csrf / sql injectionとヤバそうなwordが並べられてますので
さっさとversion up しましょう。


ざっくり

rails2.x.xと3.0.xに影響のあるお話

XSS対策(mail_to がまずらいしい)
・CSRF対策(詳しくは下記)

rails3.0.xのみに影響のあるお話

・Filter(なんかよく分からんけどaction名に起因するファイルがどうたらこうたら)
・limitにSQL Injection

CSRF対策

このCSRF対策ですが、別記事で対策が書かれています。
Riding Rails: CSRF Protection Bypass in Ruby on Rails


CSRF対応の挙動が変わるのと
全てのGETじゃないrequestに対してtokenを必要とするように変更してるらしい。
ajaxのこと言ってるっぽい)



んで、1つ目が
CSRFでエラーになった場合、http status 500を返していたのが
sessionをresetするようになったと。


cookieを使った自動ログイン用には、handle_unverified_request
をoverrideしてcookie削除してねと。

def handle_unverified_request
   super # call the default behaviour which resets the session
   cookies.delete(:remember_me) # remove the auto login cookie so the fraudulent request is rejected.
end


2つ目の話でajax requesにtoken入れるために
application.html.erbにcsrf_meta_tag入れてねと。
rails2.3系でも使えるようにbackportしたよ。
(3系では、最初っから入ってますね)

<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>


それから、jsも更新がいるんだよ〜ん、と。
rails3はrake rails:updateでrails.jsを更新すればいいんだけど、
rails2.xの場合はsnippet用意してるからぶち込んでねと。
prototype用
jquery用


また、即updateできない人用にpatchも用意されてます。
リンク張るの面倒だったので、元記事のPatchesを見てください。
3.0/2.3系だけでなく、2.2/2.1系も用意してくれてます。