プロジェクト

全般

プロフィール

Backport(バックポート) #2681

パスワード再発行処理を行なおうとすると http://opauthmailaddress/ に飛ばされてしまう

Kousuke Ebihara12年以上前に追加. 約12年前に更新.

ステータス:
Invalid(無効)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2010-10-15
期日:
進捗率:

0%


説明

Overview (現象)

1. 「パスワードを忘れた方へ」リンクよりパスワード再発行の申請を行う
2. パスワード再発行メールに
http://sns.example.com//opAuthMailAddress/passwordRecoveryComplete/token/hogehoge/id/XX
というURLが記載されているので、このURLにアクセスする
3. 新しいパスワード入力して、決定ボタンを押下すると、
http://opauthmailaddress/passwordRecoveryComplete/token/hogehoge/id/XX
というURLに飛ばされてしまう

元の報告:
http://twitter.com/77web/statuses/27406372500

確認バージョン

  • 3.6beta6 再現した
  • 3.4.20 発生せず

関連するチケット

関連している OpenPNE 3 - Bug(バグ) #1687: パスワード再発行処理を行なおうとすると http://opauthmailaddress/ に飛ばされてしまう Fixed(完了) 2010-10-15

履歴

#1 Kousuke Ebihara12年以上前に更新

  • 期日2012-01-12 にセット

#2 Minoru Takai12年以上前に更新

  • 期日 を削除 (2012-01-12)
  • 優先度High(高め) から Normal(通常) に変更
  • 対象バージョンOpenPNE 3.4.19 から OpenPNE 3.4.x に変更

この問題は OpenPNE-3.4 系では生じないようです。しかし、なぜ生じないのかについて調査しきれていません。

1. 「パスワードを忘れた方へ」リンクよりパスワード再発行の申請を行う
2. パスワード再発行メールに
http://sns.example.com//opAuthMailAddress/passwordRecoveryComplete/token/hogehoge/id/XX
というURLが記載されているので、このURLにアクセスする
3. 新しいパスワード入力して、決定ボタンを押下すると、
http://opauthmailaddress/passwordRecoveryComplete/token/hogehoge/id/XX
というURLに飛ばされてしまう
  • (1) この問題は 3.4 系では生じない
    • 上記の再現手順 2 の問題は生じるが、手順 3 の問題は生じない
  • (2) しかし元チケットと同等の修正を施しておくことが好ましいかもしれないし、そうでないかもしれない
    • 元チケットでの修正は、上記手順 2 の問題(URLのパス部分の先頭が // で始まっている)が生じないように修正を行なっている

(1) の意味ではこのチケットをこのまま Invalid でクローズすべきですが、 (2) のことを考えると(調査が不完全なことも含めて)クローズしてしまうのは不適切な気がしています。バックポートチケットと元チケットの間で、チケットの設定値を同一にしておく必要があるかどうか分かりませんが、チケットの優先度を下げた上で OpenPNE-3.4.x 向けチケットとして残しておいたほうがよいのではないかと考えています。

#3 Kousuke Ebihara約12年前に更新

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

#4 Yuya Watanabe約12年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Yuya Watanabe にセット

#5 Yuya Watanabe約12年前に更新

3.6では発生して3.4では発生しない理由

form の action 属性値に与えられる url を生成する部分で 3.4 と 3.6 に違いが発生している.
具体的には以下の部分である.

3.4 の apps/pc_frontend/templates/_partsForm.php

  3 $options->setDefault('url', url_for(sfContext::getInstance()->getRouting()->getCurrentInternalUri()));
...
 14 <form action="<?php echo $options->getRaw('url') ?>" method="<?php echo $options['method'] ?>"<?php if (!empty($options['isMultipart'])): ?> enctype="multipart/form-data"<?php endif; ?>>

3.6 の apps/pc_frontend/templates/_partsForm.php

  7 $options->setDefault('url', $sf_request->getCurrentUri());
...
 13 <form action="<?php echo $options->getRaw('url') ?>" method="<?php echo $options['method'] ?>"<?php if (!empty($options['isMultipart'])): ?> enctype="multipart/form-data"<?php endif; ?>>

3.4 で用いている sfContext::getInstance()->getRouting()->getCurrentInternalUri() では頭に付いている // の部分が省かれて取得され,正常に動作する.
しかし 3.6 の場合は $sf_request->getCurrentUri() では // が付与されたまま action 属性として表示してしまうため本チケットの問題が発生する.

問題発生場所

この修正は以下のチケットおよびコミットで変更されている.

#1004 「[Optimization] Decrease generating url by default rule (:module/:action) (デフォルトルール (:module/:action) による URL 生成を減らす)」

e8e250952e1dfaab11b0aceb7119a7afd968ff31

commit e8e250952e1dfaab11b0aceb7119a7afd968ff31
Author: Kousuke Ebihara <ebihara@tejimaya.com>
Date:   Mon May 10 18:47:48 2010 +0900

    there are wrong fetching current URL with parameters in default value of parts (fixes #1004)

diff --git a/apps/pc_frontend/templates/_partsForm.php b/apps/pc_frontend/templates/_partsForm.php
index 5afa4d2..dbac137 100644
--- a/apps/pc_frontend/templates/_partsForm.php
+++ b/apps/pc_frontend/templates/_partsForm.php
@@ -4,10 +4,7 @@ $options->setDefault('method','post');
 $options->setDefault('firstRow', '');
 $options->setDefault('lastRow', '');
 $options->setDefault('mark_required_field', true);
-if (!isset($options['url']))
-{
-  $options->setDefault('url', url_for(sfContext::getInstance()->getRouting()->getCurrentInternalUri()));
-}
+$options->setDefault('url', $sf_request->getCurrentUri());
 ?>
 <?php if ($options['form'] instanceof opAuthRegisterForm): ?>
 <?php echo $options['form']->renderFormTag($options['url'], array('method' => $options['method'])) ?>

対応すべきかどうか

3.4 では #1004 は Enhancement であるため対応することは考えられない.
そのため本問題は発生しないと考えられ,Invalid とすることが正しいと判断できる.

#6 Yuya Watanabe約12年前に更新

  • ステータスAccepted(着手) から Invalid(無効) に変更

note-5 より,本チケットを Invalid としてクローズします.

#7 Yuya Watanabe約12年前に更新

  • 説明 を更新 (diff)

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