プロジェクト

全般

プロフィール

Backport(バックポート) #4018

完了

Bug(バグ) #4012: メールアドレス設定から意図的に他のメンバーと同じメールアドレスを設定できる

メールアドレス設定から意図的に他のメンバーと同じメールアドレスを設定できる

Youichi Kimura さんが約8年前に追加. ほぼ6年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2016-09-23
期日:
進捗率:

100%

予定工数:

説明

Overview (概要)

再現手順:

  1. メンバーA でログインし、PCメールアドレス設定 (/member/config?category=pcAddress) を開く
  2. PCメールアドレスに hoge@example.com を入力して「送信」ボタンをクリック
    • hoge@example.com 宛に確認メールが届くが、この時点ではメールに記載されている URL を開かない
  3. メンバーB でログインし、PCメールアドレス設定 (/member/config?category=pcAddress) を開く
  4. PCメールアドレスに hoge@example.com を入力して「送信」ボタンをクリック
  5. メンバーA によって送られた「メールアドレス変更ページのお知らせ」のメールに記載されている URL を開く
  6. メンバーA のパスワードを入力して「送信」ボタンをクリック
  7. メンバーB によって送られた「メールアドレス変更ページのお知らせ」のメールに記載されている URL を開く
  8. メンバーB のパスワードを入力して「送信」ボタンをクリック
  9. メンバーA, メンバーB のPCメールアドレスが同じ hoge@example.com に設定された状態になる

Causes (原因)

lib/config/config/member_config.yml では pc_address および mobile_address に対して IsUnique: true が指定されており、実際に「PCメールアドレス設定」のフォームでは MemberConfigForm::isUnique() によって重複チェックが行われている。
しかし、メールアドレス変更については、変更後のメールアドレス宛に /member/configComplete?token=*** のURLをメールで送った上で、確認が完了するまでは pc_address を変更しないという例外的な対応を取っている。そのため、MemberConfigForm のバリデーション時には重複しなかったが /member/configComplete の時点で重複するような場合には対処できていなかった。

Way to fix (修正内容)

opMemberActions::executeConfigComplete() において、pc_address_pre または mobile_address_pre を pc_address または mobile_address に変更する直前にも重複チェックを行う。これにより、上記の再現手順でいう手順 8 の段階でエラーが発生するようになる。

なお、手順 4 の段階で pc_address_pre が重複するためこの時点でエラーを発生させるといった修正も考えられるが、これをエラーとしてしまうと悪意のあるメンバーが任意のメールアドレスを確認が未完了のまま放置することによって他のメンバーがそのメールアドレスを使用できない状態に出来てしまうため、pc_address_pre に対する重複チェックは行わない。


関連するチケット 1 (0件未完了1件完了)

関連している OpenPNE 3 - Backport(バックポート) #4016: メールアドレス変更処理が完了しても、仮登録用のデータ (***_pre, ***_token) が MemberConfig に残ってしまい、削除されないFixed(完了)Youichi Kimura2012-06-14

操作

Youichi Kimura さんが約8年前に更新

  • 関連している Bug(バグ) #4012: メールアドレス設定から意図的に他のメンバーと同じメールアドレスを設定できる を追加

Youichi Kimura さんが約8年前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

下記の Pull Request にて修正しました (#4016, #4018 の修正を含んでいます)
https://github.com/openpne/OpenPNE3/pull/375

Shinichi Urabe さんがほぼ8年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

バグチケットと同様の理由で差し戻し

isao sano さんが7年以上前に更新

  • 関連している Backport(バックポート) #4016: メールアドレス変更処理が完了しても、仮登録用のデータ (***_pre, ***_token) が MemberConfig に残ってしまい、削除されない を追加

kaoru n さんが約7年前に更新

  • 親チケット#4012 にセット

isao sano さんが6年以上前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更
  • 進捗率50 から 0 に変更

isao sano さんが6年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

https://github.com/openpne/OpenPNE3/pull/504 にてプルリクエストしました。

Rimpei Ogawa さんがほぼ6年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

親チケットでの指摘がこちらでは修正されていません
https://redmine.openpne.jp/issues/4012#note-13

kaoru n さんがほぼ6年前に更新

  • ステータスRejected(差し戻し) から Pending Review(レビュー待ち) に変更

Rimpei Ogawa さんがほぼ6年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

レビューOKです。

kaoru n さんがほぼ6年前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.30 に変更

Chiharu Nakajima さんがほぼ6年前に更新

  • ステータスPending Testing(テスト待ち) から Pending Merge(マージ待ち) に変更
  • 進捗率70 から 80 に変更

動作確認OKです

kaoru n さんがほぼ6年前に更新

  • ステータスPending Merge(マージ待ち) から Fixed(完了) に変更
  • 進捗率80 から 100 に変更

マージしました

他の形式にエクスポート: Atom PDF