CSRF (Cross-Site Request Forgery) の保護が有効になる条件
概要については次を参照。
http://rubist.blog77.fc2.com/blog-entry-117.html
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
つまり、verified_requestと判断されるには、条件の上からどれかを満たせばよい訳です。
- ApplicationControllerにprotect_against_forgeryを設定していない
- リクエストメソッドがget
- リクエストのフォーマットがverify可能でない
- リクエストのトークンが期待通りの値となっている
ここで、「リクエストのフォーマットがverify可能」とは、リクエストの要求フォーマットがhtmlかjsの場合です(少なくとも2.0.2では)。