溝口 令雄
mizog****@gmail*****
2010年 4月 6日 (火) 21:41:22 JST
お世話になっております。溝口です。 kunitsuji <tsuji****@m-s*****> さんwrote: > これって、FORMで配列で値を受け取った時、ということですか。 いえ、set_value() を複数回呼んでいるのは、配列を受け取っている画面では ありません。別の機能です。 このスレッドの最初に、 Kenji Suzuki <kenji****@gmail*****> さんwrote: > このバグに当たるような実装をすることは少ないと思いますが、 とKenji様がおっしゃっているとおり、同じフィールドに対して set_value() を複数回呼ぶという実装がまずいのかもしれません。 ・同一フィールド(パラメータ)に対するset_value()の呼び出しは1回のみ とルールを決め、パッチは適用せずに元のまま使い、必要であれば、 ---------- $value = set_value('field_name', $default_value); ---------- と一旦変数に入れて、それを複数回出力するようにした方が安全なのかもしれ ないです。 ほぼ初めてCodeIgniterを使用しているので、これがCodeIgniter的に正しい作 法なのかどうなのかいまいちよく分からないのですが… よろしくお願いいたします。 __________________________ _________________________________________/ Original Message Subj: Re: [Codeigniter-users] 【注意喚起】CodeIgniter 1.7.2 Formヘルパー の脆弱性 From: kunitsuji <tsuji****@m-s*****> To : codei****@lists***** Cc : -- Date: 2010/04/06 18:49:52 > kunitsujiです。 > > これって、FORMで配列で値を受け取った時、ということですか。 > > > >お世話になっております。溝口です。 > > > >Kenji Suzuki <kenji****@gmail*****> さんwrote: > > > >> となると、この if文自体を削除した方がいいでしょうかね。 > >> > >> if (isset($prepped_fields[$field_name])) > >> { > >> return $str; > >> } > > > >ここを削除すると確かに前の値は残らなくなりますが、 > >set_value() を2度呼び出した場合、& が > >1度目では $amp; > >2度目では &amp; > >と変換されるようになります(※)。 > > > >パッチ適用時には、※の問題は起こりません。 > > > >よろしくお願いいたします。 > > > > > > _________________________ > > _ > >_________________________________________/ Original Message > >Subj: Re: [Codeigniter-users] 【注意喚起】CodeIgniter 1.7.2 Formヘル > >パー > >の脆弱性 > >From: Kenji Suzuki <kenji****@gmail*****> > >To : codei****@lists***** > >Cc : -- > >Date: 2010/04/06 17:09:36 > > > >> Kenji です。 > >> > >> > >> On Tue, 06 Apr 2010 15:12:43 +0900 > >> 溝口 令雄 <mizog****@gmail*****> wrote: > >> > >> > Kenji 様 > >> > > >> > お世話になっております。溝口です。 > >> > > >> > Kenji Suzuki <kenji****@gmail*****> さんwrote: > >> > > >> > > CodeIgniter 1.7.2 の Formヘルパー の set_value() で同じフィー > >> > > ルド > >> > > を > >> > > 2回目以上表示すると 2回目以降は文字参照に変換されず XSS脆弱性 > >> > > にな > >> > > る > >> > > 可能性があります。 > >> > > > >> > > 詳細 > >> > > http://d.hatena.ne.jp/Kenji_s/20100316/1268701194 > >> > > >> > 上記ページに記載して頂いたパッチを当てたところ、たとえば > >> > > >> > ---------- > >> > <?php foreach ($rows as $idx => $row): ?> > >> > ...(中略)... > >> > <?= form_input(array( > >> > 'name' => F_SORT . '[]', > >> > 'value' => $row[DBC_SORT], // (A) > >> > 'size' => '2', > >> > 'tabindex' => $idx + 1 > >> > )) . LF ?> > >> > ...(中略)... > >> > <?php endforeach; ?> > >> > ---------- > >> > > >> > のようにform_input()関数をループ中で繰り返し呼び出している箇所で、 > >> > value属性に指定している(A)の値($row[DBC_SORT]の値)が常に$ > >> > rowsの > >> > 1番目の要素の値になってしまいました。 > >> > パッチを元に戻すとこの現象は起こりません。 > >> > > >> > これはどのように対処すべきでしょうか? > >> > >> なるほど。そうですか。 > >> > >> となると、この if文自体を削除した方がいいでしょうかね。 > >> > >> if (isset($prepped_fields[$field_name])) > >> { > >> return $str; > >> } > >> > >> > >> // Kenji > >> > >> > >> > よろしくお願いいたします。 > >> > > >> > > >> > _____________________ > >> > ___ > >> > __ > >> > _________________________________________/ Original Message > >> > Subj: [Codeigniter-users] 【注意喚起】CodeIgniter 1.7.2 Formヘル > >> > パー > >> > の > >> > 脆弱性 > >> > From: Kenji Suzuki <kenji****@gmail*****> > >> > To : codei****@lists***** > >> > Cc : -- > >> > Date: 2010/03/16 10:07:28 > >> > > >> > > Kenji です。 > >> > > > >> > > > >> > > CodeIgniter 1.7.2 の Formヘルパー の set_value() で同じフィー > >> > > ルド > >> > > を > >> > > 2回目以上表示すると 2回目以降は文字参照に変換されず XSS脆弱性 > >> > > にな > >> > > る > >> > > 可能性があります。 > >> > > > >> > > 詳細 > >> > > http://d.hatena.ne.jp/Kenji_s/20100316/1268701194 > >> > > > >> > > これ、なかなか修正されないのでバグでないのかも知れませんが。 > >> > > このバグに当たるような実装をすることは少ないと思いますが、知ら > >> > > ず > >> > > に > >> > > やってしまうと危険ですので、注意喚起しておきます。 > >> > > > >> > > > >> > > 本家では、以下に書き込みがあります。バグだと思われる方は、「バ > >> > > グ > >> > > なの > >> > > で > >> > > 直してくれ」みたいなことを書き込んでもらえるといいかもしれませ > >> > > ん。 > >> > > > >> > > * http://codeigniter.com/bug_tracker/bug/11284/ > >> > > * http://codeigniter.com/forums/viewthread/139112/ > >> > > > >> > > > >> > > // Kenji > >> > > > >> > > _______________________________________________ > >> > > Codeigniter-users mailing list > >> > > Codei****@lists***** > >> > > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > >> > _______________________________________________________________ > >> > ___ > >> > __ > >> > > >> > _______________________________________________ > >> > Codeigniter-users mailing list > >> > Codei****@lists***** > >> > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > >> > >> _______________________________________________ > >> Codeigniter-users mailing list > >> Codei****@lists***** > >> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > >___________________________________________________________________ > >_ > > > >_______________________________________________ > >Codeigniter-users mailing list > >Codei****@lists***** > >http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users ____________________________________________________________________