11.2 クロスサイトリクエストフォージェリ (CSRF)
適切なルーティングになっているか確認する
CSRFの対策の基本として適切なHTTPメソッド用いているのか、ということを確認する必要があります。
W3Cとのガイドラインとして以下のものがあります。
GETを利用する時
- 読み出し
- クエリ
- 検索
などのリソースに影響を与えないリクエストはGETを用いるようにするのが望ましいです。
POSTを利用する時
リソースに変更を及ぼすものや、決済などのリクエストはPOSTを用いるようにするのが望ましいです。
protect_from_forgeryを設定する
リクエストごとにセキュリティトークンを要求することで不正なリクエストを遮断することができます。 Railsでは以下のコードがコントローラに定義されています。これによりリクエストにはセキュリティトークンが含まれ安全に処理されます。
protect_from_forgery with: :exception