Our Blog

ECCUBEのバージョンアップとCSRF対策

  • 10pakpak

10月23日、11月13日に緊急度の高い不具合修正バージョンがECCUBEからリリースされたため、弊社管理のECCUBE製サイトのバージョンアップを行いました。

http://www.ec-cube.net/news/detail.php?news_id=260
http://www.ec-cube.net/news/detail.php?news_id=258

修正内容を見てみると、クロスサイトリクエストフォージェリ(CSRF)という脆弱性への対応のようです。

CSRF脆弱性を利用して、攻撃者はユーザの意図しない操作をターゲットサイト上で行わせることが出来ます。今回の場合、ユーザがECCUBEの管理アカウントにログインしたまま、攻撃者が用意したサイトやHTMLメールを開くと、CSRF脆弱性の見つかった操作をユーザの意図と関係なく行わせられる危険がありました。

CSRFの対策方法は、事前にtokenをサーバで生成&セッションに保存、formのhidden値にtokenを設定しておき、formのpost時にセッションに保存されたtokenとformから送信されてくるtokenの同一性を検証するというものです。攻撃者はtokenを偽装することが出来ないため、攻撃を防ぐことが出来ます。ECCUBEの場合、下記のgetToken, isValidTokenあたりが対策用コードのようです。

data/class/helper/SC_Helper_Session.php#L161-L168
data/class/helper/SC_Helper_Session.php#L199-L213

最近のHTMLForm生成用ライブラリの多くは、CSRF対策の機能を備えているものが多く、特に意識しなくても対策ができてしまいます。弊社のシステム開発案件ではRuby on Railsをよく使うのですが、Ruby on Railsではフォーム生成用のヘルパー関数を用いることで自動的にtokenの生成とformへの設定、tokenの同一性検証を行ってくれます。

Rails最高!

This is a unique website which will require a more modern browser to work! Please upgrade today!