LoginSignup
5
6

More than 5 years have passed since last update.

Codeigniter3.0とIon AuthとJQueryの組み合わせで起こったこと

Last updated at Posted at 2016-04-25

動いていたはずなのに

Codeigniter3.0とIon Authである程度動線を作りこみ動作確認を行ったときは問題はなかったのに、デザインテンプレートをあてこみIonAuthで既存のUsers情報を更新しようしたところ、セキュリティに問題があるということでどうしても失敗してしまう。

セッションに問題があるらしい

コントローラAuth.phpでは、1)パスワードのリセット 2)Users情報の更新 には事前にセットされた2つのセッション変数(csrfkeyとcsrfvalue)を照合して成功すれば 1)と 2)それぞれ正常に動作する。
2つのセッション情報は同じコントローラAuth.php内の _get_csrf_nonce という関数で代入される。
私が失敗していたのは更新途中でこの2つのセッション情報が消失してしまったからだった。

原因はたぶんjquery.min.js

デザインテンプレートをあてこんでから挙動がおかしくなったので、読み込んでいるcssやJSをひとつひとつはずしてみたところ、jquery.min.jsを読み込んだ後に2つのセッション変数(csrfkeyとcsrfvalue)が消えてしまうことがわかった。
本来ならしっかり検証しなくてはならないところだけど。。。

とりあえずの対処方法

直接$_SESSIONを使うことにした。変数はjqueryにかぶらないように?790行目あたりを

$key = $_SESSION["ion_auth"]["csrfkey"];
$value = $_SESSION["ion_auth"]["csrfvalue"];

と書き換えたらUsersが更新できるようになった。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6