Bug(バグ) #3220
Shinichi Urabe が11年以上前に更新
h3. 現象
opSecurityUser::login() 内に以下のような処理があり、パラメータをurlencode()せず、文字結合している。 内に以下のような処理があり、パラメータをurlencode()せず、文字結合いる。
この $uri の返値は、現時点では opMemberAction::login() でのみ使われており (本チケットはOpenPNE本体のみのソースを追って確認したもので、プラグインなどで別の用途でこの返値を使っている場合、このチケットの修正目的からすると影響を受けてしまう。)、ここからリダイレクト用のURLとして扱われているので、urlencode() されている必要のあるパラメータだと考えられる。
* is_remember_login のパラメータについてはintでキャストしているため問題ないと考えられる
* next_uri, sid, ts のパラメータについては、URLとして意味を持つ文字列が含まれる可能性があるため、urlencode() が必要と考えられる のパラメータについては、URLとして意味を持つ文字列が含まれる可能性がある
<pre>
$uri = '@member_setSid?next_uri='.$uri
.'&is_remember_login='.(int)$this->getAuthAdapter()->getAuthForm()->getValue('is_remember_me')
.'&sid='.$item[0]
.'&ts='.$item[1];
</pre>
h3. 原因
urlencode() の対応漏れだと考えられる
h3. 修正案
各パラメータに urlencode() を施す
opSecurityUser::login() 内に以下のような処理があり、パラメータをurlencode()せず、文字結合している。 内に以下のような処理があり、パラメータをurlencode()せず、文字結合いる。
この $uri の返値は、現時点では opMemberAction::login() でのみ使われており (本チケットはOpenPNE本体のみのソースを追って確認したもので、プラグインなどで別の用途でこの返値を使っている場合、このチケットの修正目的からすると影響を受けてしまう。)、ここからリダイレクト用のURLとして扱われているので、urlencode() されている必要のあるパラメータだと考えられる。
* is_remember_login のパラメータについてはintでキャストしているため問題ないと考えられる
* next_uri, sid, ts のパラメータについては、URLとして意味を持つ文字列が含まれる可能性があるため、urlencode() が必要と考えられる のパラメータについては、URLとして意味を持つ文字列が含まれる可能性がある
<pre>
$uri = '@member_setSid?next_uri='.$uri
.'&is_remember_login='.(int)$this->getAuthAdapter()->getAuthForm()->getValue('is_remember_me')
.'&sid='.$item[0]
.'&ts='.$item[1];
</pre>
h3. 原因
urlencode() の対応漏れだと考えられる
h3. 修正案
各パラメータに urlencode() を施す