Backport(バックポート) #2410
opAuthRegisterFormMailAddress::doSave()の$memberConfig->setName()の処理で、レコードの存在チェックがない
Start date:
2010-10-09
Due date:
% Done:
100%
Description
詳細¶
opAuthRegisterFormMailAddressクラスのdoSave()メソッドで、事前に登録されたメールアドレス(mobile_address_preまたはpc_address_pre)を正式なアドレス(mobile_addressまたはpc_address)に付け替える(member_configレコードのnameを変更する)処理を行っているが、mobileアプリケーションの場合はmobile_address_pre、そうでない場合はpc_address_preのレコードが存在する前提のコードになっている。
例えば以下のような(割と容易な)手順で、mobileアプリケーションからの登録にもかかわらずmobile_address_preが存在しないという状況になる
- 管理画面からPC系メールアドレス(gmailなど)宛に招待を送る
- 招待を受け取ったユーザーが、メールを携帯に転送する
- 携帯でメンバー登録URLにアクセス
- そのまま携帯からメンバー登録フォームを送信
- エラーになり登録できない(画面にはエラーとは表示されない)
提案¶
コアの仕様、ポリシー(セキュリティ)に関連するため、根本的な対処はこのチケットの範囲外になってしまうと思いますが、いくつか考慮が必要な点を書いておきます。
- そもそも説明に書いたような手順を許可するのかどうか
- 次の項目とも関連
- 説明に書いたような手順で携帯から登録ができても、設定によっては携帯からはログインできない、という挙動にするのか
なお、暫定的な対処方法は、$memberConfig->setName の前に$memberConfigのnullチェックを行い、nullであればエラーとするよう修正することです。
(この時点ではなく、登録フローのもう少し前でエラーになった方が親切でしょうけれど、それには上に書いたような仕様の検討が必要でしょうし)
Related issues
History
#1 Updated by Kousuke Ebihara almost 13 years ago
- Target version changed from 1.3.4 to 1.2.2
#2 Updated by Yuya Watanabe over 12 years ago
- Status changed from New(新規) to Accepted(着手)
- Assignee set to Yuya Watanabe
#3 Updated by Yuya Watanabe over 12 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
#4 Updated by Kousuke Ebihara over 12 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
#5 Updated by Yuma Sakata over 12 years ago
- Status changed from Pending Testing(テスト待ち) to Fixed(完了)
- % Done changed from 70 to 100
テストOKです。