diff options
author | Daniel Lopes <danielvlopes@gmail.com> | 2012-06-07 15:19:49 -0300 |
---|---|---|
committer | Daniel Lopes <danielvlopes@gmail.com> | 2012-06-07 15:19:49 -0300 |
commit | 39856627e0e3d50db4eb400bdfaca3bc0958d211 (patch) | |
tree | 914ac22d7334415dcb3387cc6e8cace9f1a12012 | |
parent | 5907b0b7f28132eb27a084536ee7766914bcc3a1 (diff) | |
download | rails-39856627e0e3d50db4eb400bdfaca3bc0958d211.tar.gz rails-39856627e0e3d50db4eb400bdfaca3bc0958d211.tar.bz2 rails-39856627e0e3d50db4eb400bdfaca3bc0958d211.zip |
Document the CSRF whitelisting on get requests
-rw-r--r-- | actionpack/lib/action_controller/metal/request_forgery_protection.rb | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/actionpack/lib/action_controller/metal/request_forgery_protection.rb b/actionpack/lib/action_controller/metal/request_forgery_protection.rb index 95b0e99ed5..eb7057d278 100644 --- a/actionpack/lib/action_controller/metal/request_forgery_protection.rb +++ b/actionpack/lib/action_controller/metal/request_forgery_protection.rb @@ -8,11 +8,22 @@ module ActionController #:nodoc: # Controller actions are protected from Cross-Site Request Forgery (CSRF) attacks # by including a token in the rendered html for your application. This token is # stored as a random string in the session, to which an attacker does not have - # access. When a request reaches your application, \Rails verifies the received - # token with the token in the session. Only HTML and JavaScript requests are checked, - # so this will not protect your XML API (presumably you'll have a different - # authentication scheme there anyway). Also, GET requests are not protected as these - # should be idempotent. + # access. When a request reaches your application, Rails verifies the received + # token with the token in the session. All requests are checked except GET requests + # as these should be idempotent. It's is important to remember that XML or JSON + # requests are also affected and if you're building an API you'll need + # something like that: + # + # class ApplicationController < ActionController::Base + # protect_from_forgery + # skip_before_filter :verify_authenticity_token, :if => json_request? + # + # protected + # + # def json_request? + # request.format.json? + # end + # end # # CSRF protection is turned on with the <tt>protect_from_forgery</tt> method, # which checks the token and resets the session if it doesn't match what was expected. |