*Rails2.0のprotect_from_forgeryIE7で効かない罠[rails][IE7]
actionpack-2.0.2/lib/action_controller/request_forgery_protection.rb
def verified_request? !protect_against_forgery? || request.method == :get || #↓ここ に注目 !verifiable_request_format? || form_authenticity_token == params[request_forgery_protection_token] end #ようするにhtmlかjs以外はtokenがチェックされない def verifiable_request_format? request.format.html? || request.format.js? end
request.formatとは?
actionpack-2.0.2/lib/action_controller/request.rb
#formatが指定されていれば それ #それ以外はaccesptsの最初 def format @format ||= parameters[:format] ? Mime::Type.lookup_by_extension(parameters[:format]) : accepts.first end
ちなみにIE7でアクセスすると
format指定しないと formatがimage/gifになりました
以下のような感じで js/html以外にもチェックするようにするしか対策が無いかもしれないですね
少なくとも:getははじいてるので とりあえず大丈夫かな
module ActionController #:nodoc: module RequestForgeryProtection protected # #以下の用にモジュールのメソッドに対して上書き # def verifiable_request_format? true end end end