Rails/CSRF対策
久々にブログ更新。
スクールではチーム開発が始まり、なんか知らんけどスクラムマスターになりました。
他メンバーよりもコードを書く時間がないっていうのがちょっと辛いところですが、インフラからフロントまで広く勉強していけるのはいいですね。
いいです。いい・・かなぁ?器用貧乏さが増すような・・。まぁいいや。
CSRFとは
クロスサイトリクエストフォージェリと呼ばれる。 この攻撃により、掲示板や問い合わせフォームなどを処理するWebアプリケーションが、本来拒否すべき他サイトからのリクエストを受信し処理してしまいます。
具体的な手順はこんな感じ
1:攻撃者は攻撃用Webページを準備し、ユーザがアクセスするよう誘導する。
2:ユーザが攻撃用Webページにアクセスすると、攻撃用Webページ内にあらかじめ用意されていた不正なリクエストが攻撃対象サーバに送られる。
3:攻撃対象サーバ上のWebアプリケーションは不正なリクエストを処理し、ユーザが意図していない処理が行われる。
フィッシングサイトとか、詐欺メールとかよく言われるやつかなと思います。
Railsで行われているCSRF対策
application controllerにprotectfromforgery with: :exceptionの記述がある。
この記述により、Railsが生成する全てのフォームやAjaxリクエストで自動的にセキュリティトークンを含めることができる
application.html.erbにcsrfmetatagsというメソッドも埋め込まれている
RailsのjQueryはPOST送信時にこのメソッドで追加されるHTMLタグの情報を自動的に使用するため、このメソッドがあれば特に何もせずともCSRF対策がなされる
こんな感じで、コントローラ及びビューそれぞれで脆弱性対策を行なっているようです。