Bug(バグ) #1668
完了opAuthRegisterFormMailAddress::doSave()の$memberConfig->setName()の処理で、レコードの存在チェックがない
100%
説明
詳細¶
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であればエラーとするよう修正することです。
(この時点ではなく、登録フローのもう少し前でエラーになった方が親切でしょうけれど、それには上に書いたような仕様の検討が必要でしょうし)
Mutsumi Imamura さんが13年以上前に更新
- トラッカー を Enhancement(機能追加・改善) から Bug(バグ) に変更
- 優先度 を Normal(通常) から High(高め) に変更
- 3.6 で発生するか を Yes にセット
- [QA]バグ通知済 を いいえ にセット
Maki Takahashi さんが約13年前に更新
修正方針の検討¶
- そもそも説明に書いたような手順を許可するのかどうか
- 次の項目とも関連
- 説明に書いたような手順で携帯から登録ができても、設定によっては携帯からはログインできない、という挙動にするのか
- 2系では上記手順が許可されていなかった
- 設定(PC版/携帯版がともに有効かつログイン時にPCメールアドレス&携帯メールアドレスの両方を受け付けるときのみ)によって許可するという案もあるが、設定は管理者によっていつでも変更可能なため、利用者に混乱を与えかねない
- (PCメールアドレスから携帯メールアドレスに転送した場合)、携帯版が無効になっていればそもそも登録ができない(逆もあり)。
以上から、PCメールアドレスヘの招待はPC版からのみ登録可能(携帯メールアドレスへの招待は携帯版からのみ登録可能)とし、
- 招待メールにその旨を記載する
- 上記手順の3.の時点でエラー表示を行う
ように修正します
Maki Takahashi さんが約13年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
https://github.com/martini2002jp/opAuthMailAddressPlugin/commit/831fe849239ed00fa09ff0f5349a759de8090b70 にて
メールに記載されたURLにアクセスした時点で、
アプリケーションとmember_configに登録されているメールアドレスの種類(PC/モバイル)が異なる場合はエラー画面を表示するようにしました。
招待メールはコアで文面を設定しているため(管理画面から編集)、「PCメールアドレスヘの招待はPC版からのみ登録可能」等の注意書きは
招待なしでの新規登録時に送信されるメールにのみ記載されます。
- 招待なしでの新規登録時(PC版)
- メール文面に注意書きがある
- PCアドレスへメール送信した場合はモバイル(モバイルアドレスへメール送信した場合はPC)でメールに記載のURLにアクセスするとエラー表示がなされる
- 招待なしでの新規登録時(モバイル版 空メール)
- メール文面に注意書きがある
- PCアドレスへメール送信した場合はモバイル(モバイルアドレスへメール送信した場合はPC)でメールに記載のURLにアクセスするとエラー表示がなされる
- ユーザーの招待からの登録
- PCアドレスへメール送信した場合はモバイル(モバイルアドレスへメール送信した場合はPC)でメールに記載のURLにアクセスするとエラー表示がなされる
- 管理者の招待からの登録
- PCアドレスへメール送信した場合はモバイル(モバイルアドレスへメール送信した場合はPC)でメールに記載のURLにアクセスするとエラー表示がなされる
以上を確認しています。
https://github.com/martini2002jp/opAuthMailAddressPlugin/commit/0d8a52a072907ab1c93fddaff0da40557061ab20 にて
メールのURLから登録情報入力画面に遷移し、フォーム送信した場合に
メールアドレスとアプリケーションが異なる場合にフォームにエラー表示がなされるように修正しました。
PCアドレス宛に招待メールを送信し
PCからメールに記載されたURLにアクセス後、フォームが表示された時点でのURLをコピー
モバイルにてコピーしたURLにアクセスしフォームを送信した場合にエラー表示されることを確認しています。
Kousuke Ebihara さんが約13年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 対象バージョン を 1.3.4 にセット
- 進捗率 を 50 から 70 に変更
master に取り込みました。 1.2.x にも修正を反映する必要があります。
Yuma Sakata さんが約13年前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。