カテゴリー:
Rails
タグ:
 Rails CSRF

このエントリーをはてなブックマークに追加
更新日時:
2014年11月02日(日)
作成日時:
2014年11月02日(日)

前の記事 / 次の記事

protect_from_forgeryのデフォルトの挙動が変わりまくって
変わる度に忘却してて混乱するのでメモ。

予期せずエラーを投げられて毎回嵌まる。

参考ページ:Rails 4.0だとCSRFトークンでエラーになる

protect_from_forgeryはCSRF対策のためのメソッドで
CSRF対策しない場合はこの行を削除するかコメントアウトすれば効かなくなる。

class ApplicationController < ActionContloller::Base
  #protect_from_forgery with: :exception
end

Rails4のデフォルト(っていうかRails4.0.1)だと
CSRFに引っかかるとエラーが投げられる。

エラーを投げるべきだとは思うんだけど
エラーじゃなくてリダイレクトさせたい場合とかあって微妙。

で、protect_from_forgery にはオプションを設定できて、
エラーを投げる以外にもいくつか設定できるっぽい。

                                          # CSRFに引っかかったら?
protect_from_forgery with: :exception     # エラーを投げる
protect_from_forgery with: :reset_session # セッションをクリアする
protect_from_forgery with: :null_sesssion # ダミーのセッションを利用する

:null_sessionっていうのはAPIでの利用を想定したオプションらしいんだけど、
APIをつくりこんだこととかないから、:reset_session する場合と較べてどう
都合がいいのか分からないけど何かの都合がいいんだと思う。