Open4

CSRF対策について(RailsのAPIモードで使うには)

teppeitateppeita

CSRFとは

  • 悪意の有るWebページを開いた時に、任意のリクエストを対象サーバに送る攻撃方法
  • リクエストには、ユーザーのブラウザに保存された認証情報が含まれるため、CookieやBASIC認証などの情報が利用される

https://www.trendmicro.com/ja_jp/security-intelligence/research-reports/threat-solution/csrf.html#:~:text=クロスサイトリクエストフォージェリ(CSRF)とは、Web,処理してしまいます。

teppeitateppeita

現在、ほとんどのモダンブラウザでは、Cookieのデフォルトの挙動がsamesite=laxなので他サイトからのPOSTではCookieが送信されない。
そのため、Cookieを利用したPOSTによるCSRFは起きなくなっている。

ただし、以下のケースでは引き続きCSRF対策が必要

  • 利用者のブラウザバージョンが古い場合
  • 利用者がIEやSafari、Firefoxを使っている場合
  • Cookieを使った認証を行っていない場合

https://blog.tokumaru.org/2022/01/impact-conditions-for-no-CSRF-protection-sites.html

https://blog.motikan2010.com/entry/2019/02/02/CookieのSameSite属性で「防げるCSRF」と「防げないCSRF」

teppeitateppeita

csrf-tokenをRailsのAPIモードで使うには

  • application_controller.rbinclude ActionController::RequestForgeryProtectionが必要
  • form_authenticity_tokenでtokenを生成してクライアントに渡す(渡し方は工夫が必要)
  • クライアントはtokenをリクエストヘッダーかparamsでサーバーに送信する

https://techracho.bpsinc.jp/hachi8833/2021_11_26/46891