プロジェクト

全般

プロフィール

Bug(バグ) #3220

opSecurityUser::login() で生成される member/setSid アクションへリダイレクトするために渡される個々のパラメータがURLエンコードされていない

Shinichi Urabe11年以上前に追加. 約7年前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2012-10-01
期日:
進捗率:

0%

3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)

説明

現象

opSecurityUser::login() 内に以下のような処理があり、パラメータをurlencode()せず、文字結合している。
この $uri の返値は、現時点では opMemberAction::login() でのみ使われており (本チケットはOpenPNE本体のみのソースを追って確認したもので、プラグインなどで別の用途でこの返値を使っている場合、このチケットの修正目的からすると影響を受けてしまう。)、ここからリダイレクト用のURLとして扱われているので、urlencode() されている必要のあるパラメータだと考えられる。

  • is_remember_login のパラメータについてはintでキャストしているため問題ないと考えられる
  • next_uri, sid, ts のパラメータについては、URLとして意味を持つ文字列が含まれる可能性があるため、urlencode() が必要と考えられる
        $uri = '@member_setSid?next_uri='.$uri
             .'&is_remember_login='.(int)$this->getAuthAdapter()->getAuthForm()->getValue('is_remember_me')
             .'&sid='.$item[0]
             .'&ts='.$item[1];

原因

urlencode() の対応漏れだと考えられる

修正案

各パラメータに urlencode() を施す


関連するチケット

コピー先 OpenPNE 3 - Backport(バックポート) #3673: opSecurityUser::login() で生成される member/setSid アクションへリダイレクトするために渡される個々のパラメータがURLエンコードされていない Fixed(完了) 2014-07-15
コピー先 OpenPNE 3 - Backport(バックポート) #3684: opSecurityUser::login() で生成される member/setSid アクションへリダイレクトするために渡される個々のパラメータがURLエンコードされていない Fixed(完了) 2012-10-01

履歴

#1 Shinichi Urabe11年以上前に更新

  • 説明 を更新 (diff)

#2 Shinichi Urabe11年以上前に更新

  • 対象バージョンOpenPNE 3.9.0-old にセット

#3 kaoru n11年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者kaoru n にセット
  • 3.8 で発生するかUnknown (未調査) から Yes (はい) に変更

#4 kaoru n11年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 担当者 を削除 (kaoru n)
  • 進捗率0 から 50 に変更

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

#5 isao sanoほぼ10年前に更新

  • コピー先 Backport(バックポート) #3673: opSecurityUser::login() で生成される member/setSid アクションへリダイレクトするために渡される個々のパラメータがURLエンコードされていない を追加

#6 Shinichi Urabe9年以上前に更新

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

レビューOK

#7 Shinichi Urabe9年以上前に更新

  • ステータスPending Testing(テスト待ち) から Rejected(差し戻し) に変更
  • 担当者kaoru n にセット
  • 進捗率70 から 50 に変更

見落としです

urlencode() を使うべきではなく rawurlencode() を使うべきです
http://www.slideshare.net/ebihara/php-32340906

#8 kaoru n9年以上前に更新

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

https://github.com/openpne/OpenPNE3/pull/63
urlencode() を rawurlencode() に変更しました

#9 Shinichi Urabe9年以上前に更新

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

コミットメッセージについて差し戻しです

コメント部分もコミットメッセージに含まれています # Please enter the commit message for your changes. Lines starting 以下
一回目の urlencode() の修正と rawurlencode() の修正のコミットメッセージが同じです
一覧で見たときにそれぞれのリビジョンの修正の違いが分からなくなるので、違いが分かるコミットメッセージをお願いします

https://redmine.openpne.jp/projects/op3/wiki/Rule_of_Shared_Repository_%28ja%29#%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8
における 「メッセージは必ずそのコミットが何であるかの説明となるようにしてください。」 の説明箇所を参考にしてください

#10 kaoru n9年以上前に更新

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

https://github.com/openpne/OpenPNE3/pull/176
プルリクエストしなおしました。

#11 Shinichi Urabe9年以上前に更新

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

レビューOK

#12 誠二 天重9年以上前に更新

  • コピー先 Backport(バックポート) #3684: opSecurityUser::login() で生成される member/setSid アクションへリダイレクトするために渡される個々のパラメータがURLエンコードされていない を追加

#14 isao sano約7年前に更新

  • ステータスPending Testing(テスト待ち) から Won't fix(対応せず) に変更
  • 進捗率70 から 0 に変更

OpenPNE 3.8.13 にて対応済みであったため、対応せずとします。

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