ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 12067


Ignore:
Timestamp:
Jun 30, 2009, 7:42:25 PM (11 years ago)
Author:
nagasawa
Message:

#4033:秘密の質問を省略した場合の悪意のある操作を防止するための機能の追加(trunk)

Location:
OpenPNE/trunk
Files:
12 edited
10 copied

Legend:

Unmodified
Added
Removed
  • OpenPNE/trunk/config.php.sample

    r12041 r12067  
    605605// 運用中に設定を「0」から「1」に変更した場合、秘密の質問を未登録のユーザーが
    606606// パスワードを忘れた場合にパスワードの再発行が出来なくなりますのでご注意下さい
    607 // また「0」に設定した場合、総当たりする事によりメールアドレスを知られてしまう恐れがあります
    608 // 「0」に設定する場合は「OPENPNE_USE_CAPTCHA」を「true」に設定する事を推奨します
    609607define('IS_PASSWORD_QUERY_ANSWER', 2);
    610608
  • OpenPNE/trunk/webapp/lib/util/ktai.php

    r12041 r12067  
    4040        24  => "秘密の質問・答えを変更しました",
    4141        25  => "パスワード再発行できませんでした",
    42         26  => "新しいパスワードをメールで送信しました",
     42        26  => "パスワード再設定用URLをメールで送信しました",
    4343        27  => "携帯個体識別番号を取得できませんでした",
    4444        28  => "かんたんログイン設定を完了しました",
     
    6868        53  => "公開範囲とトピック作成権限が指定できない組み合わせです",
    6969        54  => "公開範囲とコメント作成権限が指定できない組み合わせです",
     70        55 =>  "パスワード再設定の有効期限が過ぎています"
    7071    );
    7172
  • OpenPNE/trunk/webapp/lib/util/mail_send.php

    r12041 r12067  
    197197}
    198198
    199 //パスワード再発行メール
    200 function do_password_query_mail_send($c_member_id, $pc_address, $new_password)
    201 {
    202     $params = array(
    203         "c_member"   => db_member_c_member4c_member_id($c_member_id),
    204         "pc_address" => $pc_address,
    205         "password"   => $new_password,
     199//パスワード再発行用のハッシュメール
     200function do_password_query_mail_send($c_member_id, $pc_address, $session)
     201{
     202    $p = array('id' => t_encrypt($c_member_id), 'session' => $session);
     203    $update_password_url = openpne_gen_url('pc', 'page_o_update_password', $p);
     204    $params = array(
     205        'c_member'   => db_member_c_member4c_member_id($c_member_id),
     206        'pc_address' => $pc_address,
     207        'update_password_url' => $update_password_url,
    206208    );
    207209    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
     
    212214
    213215//パスワード再発行メール(携帯)
    214 function db_mail_send_m_ktai_password_query($c_member_id, $new_password)
     216function db_mail_send_m_ktai_password_query($c_member_id, $session)
    215217{
    216218    $c_member = db_member_c_member4c_member_id($c_member_id, true);
    217219    $ktai_address = $c_member['secure']['ktai_address'];
    218220
     221    $p = array('id' => t_encrypt($c_member_id), 'session' => $session);
     222    $update_password_url = openpne_gen_url('ktai', 'page_o_update_password', $p);
    219223    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_id, true)));
    220224    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
    221225    $params = array(
    222226        'c_member'  => $c_member,
    223         'password'  => $new_password,
     227        'session'  => $new_password,
     228        'id'   => $id,
    224229        'login_url' => $login_url,
     230        'update_password_url' => $update_password_url,
    225231    );
    226232    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
  • OpenPNE/trunk/webapp/modules/ktai/do/o_password_query.php

    r12041 r12067  
    4141        if (IS_PASSWORD_QUERY_ANSWER) {
    4242            $c_member_id = db_member_is_password_query_complete2($ktai_address, $q_id, $q_answer);
     43            if (!$c_member_id) {
     44                $p = array('msg' => 25);
     45                openpne_redirect('ktai', 'page_o_password_query', $p);
     46            }
    4347        } else {
    4448            $c_member_id = db_member_c_member_id4ktai_address($ktai_address);
    45         }
    46         if (!$c_member_id) {
    47             $p = array('msg' => 25);
    48             openpne_redirect('ktai', 'page_o_password_query', $p);
     49            if (!$c_member_id) {
     50                $p = array('msg' => 26);
     51                openpne_redirect('ktai', 'page_o_login', $p);
     52            }
    4953        }
    5054        //---
    5155
    5256        // パスワード再発行
    53         $new_password = do_common_create_password();
    54         db_member_update_password($c_member_id, $new_password);
     57        $session = create_hash();
     58        db_member_update_c_member_config($c_member_id, 'update_password_ssid', $session);
     59        db_member_update_c_member_config($c_member_id, 'password_ssid_query_time', time());
    5560
    56         db_mail_send_m_ktai_password_query($c_member_id, $new_password);
     61        db_mail_send_m_ktai_password_query($c_member_id, $session);
    5762
    5863        $p = array('msg' => 26);
  • OpenPNE/trunk/webapp/modules/ktai/templates/o_password_query.tpl

    r12041 r12067  
    22
    33<table width="100%"><tr><td align="center" bgcolor="#({$ktai_color_config.bg_02})">
    4 <font color="#({$ktai_color_config.font_05})"><a name="top">パスワード再発行</a></font><br>
     4<font color="#({$ktai_color_config.font_05})"><a name="top">パスワード再設定用URLの送信</a></font><br>
    55</td></tr></table>
    66
     
    2626({/if})
    2727<center>
    28 <input type="submit" value="パスワードを再発行する"><br>
     28<input type="submit" value="送信"><br>
    2929</center>
    3030</form>
  • OpenPNE/trunk/webapp/modules/pc/do/o_password_query.php

    r12050 r12067  
    5252            $c_member_id = db_member_is_password_query_complete($pc_address, $q_id, $q_answer);
    5353            $msg = '正しい値を入力してください';
     54            if (!$c_member_id) {
     55                $p = array('msg' => $msg);
     56                openpne_redirect('pc', 'page_o_password_query', $p);
     57            }
    5458        } else {
    5559            $c_member_id = db_member_c_member_id4pc_address($pc_address);
    56             $msg = '登録したメールアドレスを入力してください';
    57         }
    58 
    59         if (!$c_member_id) {
    60             $p = array('msg' => $msg);
    61             openpne_redirect('pc', 'page_o_password_query', $p);
     60            if (!$c_member_id) {
     61                $p = array('msg_code' => 'password_query');
     62                openpne_redirect('pc', 'page_o_tologin', $p);
     63            }
    6264        }
    6365        //---
    6466
    65         // パスワード再発行
    66         $new_password = do_common_create_password();
    67         db_member_update_password($c_member_id, $new_password);
    68         do_password_query_mail_send($c_member_id, $pc_address, $new_password);
     67        // パスワード再発行用のハッシュをDBに登録し再設定用のメールを送信
     68        $session = create_hash();
     69        db_member_update_c_member_config($c_member_id, 'update_password_ssid', $session);
     70        db_member_update_c_member_config($c_member_id, 'password_ssid_query_time', time());
     71        do_password_query_mail_send($c_member_id, $pc_address, $session);
    6972
    70         $p = array('msg_code' => 'password_query');
    71         openpne_redirect('pc', 'page_o_tologin', $p);
     73        $p = array('is_send' => true);
     74        openpne_redirect('pc', 'page_o_password_query', $p);
    7275    }
    7376}
  • OpenPNE/trunk/webapp/modules/pc/page/o_password_query.php

    r12041 r12067  
    2121
    2222        $this->set('c_password_query_list', p_common_c_password_query4null());
     23        $this->set('is_send', $requests['is_send']);
    2324
    2425        return 'success';
  • OpenPNE/trunk/webapp/modules/pc/page/o_tologin.php

    r12041 r12067  
    3838            $msg = 'ログアウトしました。';
    3939            break;
    40         case 'password_query':
    41             $msg = '新しいパスワードをメールで送信しました。';
     40        case 'update_password_timeout':
     41            $msg = 'パスワード再設定の有効期限が過ぎています。';
    4242            break;
    4343        case 'change_mailaddress':
  • OpenPNE/trunk/webapp/modules/pc/templates/o_help_login_error.tpl

    r12041 r12067  
    66<div class="partsHeading"><h3>パスワードを忘れた方</h3></div>
    77<div class="block">
    8 <p>以下のボタンをクリックし、パスワードの再発行ページをおこなってください。</p>
     8<p>以下のボタンをクリックし、パスワードの再設定手続きをおこなってください。</p>
    99
    1010({t_form_block _method=get m=pc a=page_o_password_query})
    1111<ul class="moreInfo button">
    12 <li><input type="submit" class="input_submit" value="パスワード再発行ページへ" /></li>
     12<li><input type="submit" class="input_submit" value="パスワード再設定ページへ" /></li>
    1313</ul>
    1414({/t_form_block})
  • OpenPNE/trunk/webapp/modules/pc/templates/o_password_query.tpl

    r12041 r12067  
    66<div class="partsHeading"><h3>パスワード再発行</h3></div>
    77
     8({if $is_send})
     9<div class="dparts alertBox"><div class="parts">
     10<table><tr>
     11<th><img src="({t_img_url_skin filename=icon_alert_l})" alt="警告" /></th>
     12<td>
     13パスワード再設定用URLをメールで送信しました。<br />
     14<br />
     15しばらくしてもメールが来ない場合、<br />
     16メールアドレスの入力に誤りがある可能性が考えられますので<br />
     17再度確認の上、フォームからやり直してください。
     18</td>
     19</tr></table>
     20</div></div>
     21({else})
    822<div class="partsInfo">
    923({if $smarty.const.IS_PASSWORD_QUERY_ANSWER})
    10 <p>登録したメールアドレスと、秘密の質問・答えを入力してください。<br />登録したものと一致すると、パスワードが登録メールアドレス宛に送信されます。</p>
     24<p>登録したメールアドレスと、秘密の質問・答えを入力してください。<br />パスワードを再設定するためのURLが登録メールアドレス宛に送信されます。</p>
    1125({else})
    12 <p>登録したメールアドレスを入力してください。<br />登録したものと一致すると、パスワードが登録メールアドレス宛に送信されます。</p>
     26<p>登録したメールアドレスを入力してください。<br />パスワードを再設定するためのURLが登録メールアドレス宛に送信されます。</p>
    1327({/if})
    1428</div>
     
    4963</div></div>
    5064({* }}} *})
     65({/if})
    5166
    5267</div><!-- Center -->
  • OpenPNE/trunk/webapp/templates/mail/m_ktai_password_query.tpl

    r12041 r12067  
    1 [({$SNS_NAME})]パスワード再発行のお知らせ
     1[({$SNS_NAME})]パスワード再設定用URL発行のお知らせ
    22({$c_member.nickname})さん、こんにちは。
    33({$CATCH_COPY})({$SNS_NAME})からのお知らせです。
    44
    5 パスワードを再発行いたしました。
     5パスワード再設定の要求を受け付けました。
    66
    77({if $login_id})ログインID : ({$login_id})
     
    99パスワード : ({$password})
    1010
     11下記の URL にアクセスし、パスワードの再設定をおこなってください。
     12
     13({$update_password_url})
     14
    1115({$SNS_NAME})ログインページ
    1216({$login_url})
  • OpenPNE/trunk/webapp/templates/mail/m_pc_password_query.tpl

    r12041 r12067  
    1 【({$SNS_NAME})】パスワード再発行のお知らせ
     1【({$SNS_NAME})】パスワード再設定用URL発行のお知らせ
    22
    33({$c_member.nickname})さん、こんにちは。
    44({$CATCH_COPY})({$SNS_NAME}) からのお知らせです。
    55
    6 パスワードを再発行いたしました。
     6パスワード再設定の要求を受け付けました。
    77
    88({if $login_id})ログインID : ({$login_id})
    99({/if})
    1010メールアドレス : ({$pc_address})
    11 パスワード : ({$password})
    1211
    13 なお、パスワードの変更は、「設定変更」画面からおこなってください。
     12下記の URL にアクセスし、パスワードの再設定をおこなってください。
     13
     14({$update_password_url})
    1415
    1516({$SNS_NAME})のログインページ
Note: See TracChangeset for help on using the changeset viewer.