Bug(バグ) #2647
完了携帯個体識別番号の登録を必須にしても、メールアドレスを変えると同一の個体識別番号でも何度も登録が出来てしまう
100%
説明
概要¶
携帯個体識別番号の登録を必須にしても,メールアドレスを変えると同一の個体識別番号でも何度も登録が出来てしまう.
OpenPNE 2 系では新規登録時に携帯の個体識別番号の重複登録は認められていないため,OpenPNE 3 でも同様の処理を行う必要がある.
原因¶
下記コードで個体識別番号が必須の場合に個体識別番号がリクエストで渡されているかのチェックとブラックリストに登録されているかのチェックは行われているが,登録しようとしている個体識別番号がすでに存在しているかどうかのチェックが行われていない.
lib/form/opAuthRegisterForm.class.php
129 public function validateMobileUID($validator, $values, $arguments = array()) 130 { 131 if (!opConfig::get('retrieve_uid')) 132 { 133 return $values; 134 } 135 136 if (sfConfig::get('app_is_mobile', false)) 137 { 138 $request = sfContext::getInstance()->getRequest(); 139 $uid = $request->getMobileUID(false); 140 if (!$uid && opConfig::get('retrieve_uid') >= 2) 141 { 142 throw new sfValidatorError($validator, 'A mobile UID is required. Please check settings of your mobile phone and retry.'); 143 } 144 elseif (Doctrine::getTable('Blacklist')->retrieveByUid($uid)) 145 { 146 throw new sfValidatorError($validator, 'A mobile UID is invalid.'); 147 } 148 149 $cookieUid = sfContext::getInstance()->getResponse()->generateMobileUidCookie(); 150 if ($cookieUid) 151 { 152 $values['mobile_cookie_uid'] = $cookieUid; 153 } 154 155 $values['mobile_uid'] = $uid; 156 } 157 158 return $values; 159 }
修正案¶
すでに登録されている個体識別番号を登録しようとしたときに例外を投げるように修正.
diff --git a/apps/mobile_frontend/i18n/messages.ja.xml b/apps/mobile_frontend/i18n/messages.ja.xml index 7a64c1e..b29ff74 100644 --- a/apps/mobile_frontend/i18n/messages.ja.xml +++ b/apps/mobile_frontend/i18n/messages.ja.xml @@ -1235,6 +1235,10 @@ <source>Block access from the selected member with input MemberID.<br /> MemberID is written at the end of member top page URL.<br /> ex. The MemberID is 1 when the URL "http://sns.example.com/member/1"</source> <target>メンバーIDを入力して特定のメンバーからのアクセスをブロックします。<br />メンバーIDは相手トップページのURL末尾に表示されています。<br />例:"http://sns.example.com/member/1" というURLである場合にはメンバーIDは1になります。</target> </trans-unit> + <trans-unit id=""> + <source>A mobile UID was already registered.</source> + <target>その携帯電話の個体識別番号はすでに登録されています。</target> + </trans-unit> </body> </file> </xliff> diff --git a/lib/form/opAuthRegisterForm.class.php b/lib/form/opAuthRegisterForm.class.php index eea1713..57686f3 100644 --- a/lib/form/opAuthRegisterForm.class.php +++ b/lib/form/opAuthRegisterForm.class.php @@ -145,6 +145,10 @@ abstract class opAuthRegisterForm extends BaseForm { throw new sfValidatorError($validator, 'A mobile UID is invalid.'); } + elseif (Doctrine::getTable('MemberConfig')->retrieveByNameAndValue('mobile_uid', $uid)) + { + throw new sfValidatorError($validator, 'A mobile UID was already registered.'); + } $cookieUid = sfContext::getInstance()->getResponse()->generateMobileUidCookie(); if ($cookieUid)
元記事¶
http://sns.openpne.jp/communityTopic/7794 より転記
お世話になります。 OpenPNE3.6.0を利用しております。 管理画面から『携帯個体識別番号の登録を必須にする』を設定しておりますが、メールアドレスを変えれば同一の固体識別番号でも何度も登録が出来てしまうようです。 特定のファイルを少し修正すれば固体識別番号の重複が防げそうですが、あまりにもファイル数やディレクトリ構造が複雑すぎて自力で出来そうもありません。 どなたか複アカの防止が出来る方、ご教示頂けると幸いです。 よろしくお願い致します。 PHP 5.2.17 MySQL 5.5.17 linux
Kousuke Ebihara さんが約13年前に更新
- 優先度 を Normal(通常) から Urgent(急いで) に変更
- 対象バージョン を OpenPNE 3.7.0 にセット
Kousuke Ebihara さんが約13年前に更新
- 題名 を 携帯個体識別番号の登録を必須にしても、メールアドレスを変えると同一の固体識別番号でも何度も登録が出来てしまう から 携帯個体識別番号の登録を必須にしても、メールアドレスを変えると同一の個体識別番号でも何度も登録が出来てしまう に変更
Yuya Watanabe さんが約13年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 48d4efec2f5785701fceb52638443bc15187497d で適用されました。
Yuma Sakata さんが約13年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
テスト実施しましたが、気になる点がありましたので確認お願いします。
メンバー登録時の携帯個体識別番号取得設定を「携帯登録時に携帯個体識別番号を取得する(任意)」に設定して、携帯個体識別番号を送信しないで、メールアドレス変更して再登録動作して確認¶
- 試験手順
0. SNS設定 (携帯関連設定)ページ(/pc_backend.php/sns/config/category/mobile)で「携帯登録時に携帯個体識別番号を取得する(任意)」設定にしておく
1. 携帯メールアドレスにSNS招待状を送信する
2. プロフィール項目入力後、携帯個体識別番号を送信しないでSNS新規登録する
3. キャリア側でメールアドレス変更する
4. 手順3 の携帯メールアドレスにSNS招待状を送信する
5. プロフィール項目入力してSNS新規登録する
- 試験結果
「その携帯電話の個体識別番号はすでに登録されています。」とエラーが出てSNS登録できない
- 修正方針
携帯個体識別番号を送信しない場合、SNS登録できるように修正お願いします。
- 備考
3.4 の場合、SNS登録に失敗するとハッシュ化された値が秘密の質問への答えに表示されます。
Yuya Watanabe さんが約13年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
note-7について¶
管理画面で「携帯登録時に携帯個体識別番号を取得する(任意)」という選択肢がありますが,これは個体識別番号の取得を任意で行うという意味ではなく,個体識別番号を取得できない場合に関して SNS 側で登録の完了を是とするか非とするかという話となります.また,note-7では「携帯個体識別番号を送信しない」と記述されていますが,これはおそらくDocomoの端末での話であり,「送信しない」となるのはutnが送信されないだけでiモードIDは送信されており,これを個体識別番号として扱っているため,挙動としてはnote-7は正しいといえます.新規登録時にはutnを個体識別番号として用いているわけではないため,ここでutnを必要とする点については修正を行う必要があります.これについては別チケットで対応します.
Kousuke Ebihara さんが約13年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
Shouta Kashiwagi さんがほぼ13年前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
- 3.6 で発生するか を Unknown (未調査) にセット
- 3.4 で発生するか を Unknown (未調査) にセット
テストOKです。ただし、テスト中に以下の問題を発見し、それを回避した状態でテストしています。
- #2860 携帯版において、携帯メールアドレスが登録されていない状態では携帯メールアドレス設定ができない