Mantisの今日この頃

最近のMantisはリリースミスというかリリース後に痛いバグが見つかっています。
そもそもの発端は、CSRF Vulnerabilities in user_createの対処でPHPのセッションを使用したトークンの実装にあります。
この仕組みを簡単に言うと、

  1. ユニークなトークン(文字列)を生成する。
  2. セッションにトークン(A)を保存する。
  3. 登録画面にトークン(B)を埋め込む。
  4. 登録を実行する
  5. クライアントのリクエストから取得したトークン(A)と、セッションのトークン(B)が違う場合エラーと判断する。

といったようなもので、2度押しやCSRFの対策になりますが、

といったバグが短期間に登録されました。特に1.1.4はリリースアナウンスがあって数時間で取り消されました。

PHPに限らずセッションの管理は難しいものですので、十分な試験が必要です。Hudsonとかで自動試験の仕組みをつくるのも対策にはなりますが、なかなか単体の試験を行うような構成にはなっていないので導入は難しそうです。というよりも、エラーがあったら”戻るボタン”で戻るという仕様もどうかと...


ちなみに、1.1.5として現在修正が進んでいますが、先ほどバグを見つけたので先は長そうです。