Kenji Suzuki
kenji****@gmail*****
2010年 6月 13日 (日) 18:00:23 JST
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番目の要素の値になってしまいました。 > パッチを元に戻すとこの現象は起こりません。 > > これはどのように対処すべきでしょうか? helpers/form_helper.php を if (isset($prepped_fields[$field_name])) { return htmlspecialchars($str, ENT_QUOTES); } に変更で、いけるんじゃないでしょうか。 // Kenji