Rails/CSRF対策

f:id:AK474747:20190917125102p:plain


 

久々にブログ更新。

 

スクールではチーム開発が始まり、なんか知らんけどスクラムマスターになりました。

他メンバーよりもコードを書く時間がないっていうのがちょっと辛いところですが、インフラからフロントまで広く勉強していけるのはいいですね。

 

いいです。いい・・かなぁ?器用貧乏さが増すような・・。まぁいいや。

 

今日はRailsCSRF対策について簡単に。

 

CSRFとは

クロスサイトリクエストフォージェリと呼ばれる。 この攻撃により、掲示板や問い合わせフォームなどを処理するWebアプリケーションが、本来拒否すべき他サイトからのリクエストを受信し処理してしまいます。

具体的な手順はこんな感じ

1:攻撃者は攻撃用Webページを準備し、ユーザがアクセスするよう誘導する。

2:ユーザが攻撃用Webページにアクセスすると、攻撃用Webページ内にあらかじめ用意されていた不正なリクエストが攻撃対象サーバに送られる。

3:攻撃対象サーバ上のWebアプリケーションは不正なリクエストを処理し、ユーザが意図していない処理が行われる。

フィッシングサイトとか、詐欺メールとかよく言われるやつかなと思います。

Railsで行われているCSRF対策

application controllerにprotectfromforgery with: :exceptionの記述がある。

この記述により、Railsが生成する全てのフォームやAjaxリクエストで自動的にセキュリティトークンを含めることができる

application.html.erbにcsrfmetatagsというメソッドも埋め込まれている

RailsjQueryはPOST送信時にこのメソッドで追加されるHTMLタグの情報を自動的に使用するため、このメソッドがあれば特に何もせずともCSRF対策がなされる

こんな感じで、コントローラ及びビューそれぞれで脆弱性対策を行なっているようです。