FuelPHPはSecurityクラスにCSRF対策に便利な関数が用意されています。CSRF対策の備忘録です。

config.phpの確認

config.php内の

がコメントアウトされていないことを確認します。たぶん、最新版をダウンロードしている人は最初からコメントアウトされていないと思いますが、古いバージョンではこの部分がコメントアウトされているようです。

トークンの作成

ControllerからViewに引き渡す変数の配列を$dataとするとき、次のようにトークンを作ってやります。

Config::get('security.csrf_token_key')はさっきconfigで指定したfuel_csrf_tokenが入ります。この名前を変えたいときには、configcsrf_token_keyを変更しましょう。Security::fetch_token()で実際のトークンを生成します。

Viewでhiddenフィールドを作成

Viewのformタグの間に、

を入れます。

トークンをチェックする

コントローラ内で次のように記述します。

これで、正しいポストの時にDBに保存して、不正なポストの時にはエラーを返すという処理が可能になります。

こういう関数が予め用意されてるのは便利ですね。フレームワークを使うメリットを感じます。