Project

General

Profile

Backport(バックポート) #4018

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

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

Added by Youichi Kimura about 8 years ago. Updated almost 6 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Target version:
Start date:
2016-09-23
Due date:
% Done:

100%


Description

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 に対する重複チェックは行わない。


Related issues

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

Associated revisions

Revision 1722f4fc (diff)
Added by Youichi Kimura about 8 years ago

check uniqueness of member_config value while member/configComplete action (fixes #4018, BP from #4012)

(cherry picked from commit 4769d307b49895abfdbe749b734d105819bdf9d4)

Revision 1f7f389b (diff)
Added by Youichi Kimura about 8 years ago

show new value of config in member/configComplete template (refs #4018, BP from #4012)

(cherry picked from commit 8024b2acab3ea1e0b6b7c14bb5a4bb171c177053)

Revision 6d7ee196 (diff)
Added by isao sano over 6 years ago

check uniqueness of member_config value while member/configComplete action (fixes #4018, BP from #4012)

Revision 9248e08a (diff)
Added by isao sano over 6 years ago

show new value of config in member/configComplete template (refs #4018, BP from #4012)

Revision 1b859588 (diff)
Added by isao sano over 6 years ago

Fix to narrow down the condition of member_id first (refs #4018, BP from #4012)

Revision 1b0f627d (diff)
Added by isao sano over 6 years ago

Fix method name to appropriate one (refs #4018, BP from #4012)

Revision 79ba3615 (diff)
Added by isao sano almost 6 years ago

Correct method name (refs #4018, BP from #4012)

Revision 8c0cdae4
Added by kaoru n almost 6 years ago

Merge pull request #375 from upsilon/t-4016-4018

メールアドレス変更に関する複数の修正 (fixes #4016, #4018; BP from #3077, #4012)

History

#1 Updated by Youichi Kimura about 8 years ago

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

#2 Updated by Youichi Kimura about 8 years ago

  • Status changed from New(新規) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

#4 Updated by Shinichi Urabe almost 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

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

#5 Updated by isao sano over 7 years ago

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

#6 Updated by kaoru n almost 7 years ago

  • Parent task set to #4012

#7 Updated by isao sano over 6 years ago

  • Status changed from Rejected(差し戻し) to Accepted(着手)
  • % Done changed from 50 to 0

#8 Updated by isao sano over 6 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

#9 Updated by Rimpei Ogawa almost 6 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

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

#10 Updated by kaoru n almost 6 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

#11 Updated by Rimpei Ogawa almost 6 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

レビューOKです。

#12 Updated by kaoru n almost 6 years ago

  • Target version changed from OpenPNE 3.8.x to OpenPNE 3.8.30

#13 Updated by Chiharu Nakajima almost 6 years ago

  • Status changed from Pending Testing(テスト待ち) to Pending Merge(マージ待ち)
  • % Done changed from 70 to 80

動作確認OKです

#14 Updated by kaoru n almost 6 years ago

  • Status changed from Pending Merge(マージ待ち) to Fixed(完了)
  • % Done changed from 80 to 100

マージしました

Also available in: Atom PDF