rails 3 での csrf 対策まとめ
rails3 だと、csrf トークンを投げずに post リクエストなどを送っても、
WARNING: Can’t verify CSRF token authenticity
が出ると同時にセッションがリセットされるが、POST リクエスト自体は通る。
csrf トークン自体は、form_for などのヘルパーを使ったら自動で埋め込まれる。
自分で form タグを書いた場合は
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
とテンプレートに書いて csrf トークンを埋め込む。
csrf トークンの検証に失敗した場合にエラーとしたい場合は、
class ApplicationController < ActionController def handle_unverified_request raise ActionController::InvalidAuthenticityToken end end
と handle_unverified_request を上書きして、raise ActionController::InvalidAuthenticityToken などする。