PHP6のリリースはまだまだ先の話なのですが、PHP6への移行で脆弱なWebアプリが大量に発生する可能性があります。
理由は2つ
– mb_check_encodingで全ての入力文字エンコーディングが正しいかチェックしていない
– PHP6のhtmlentities/htmlspecialcharにはマルチバイト文字チェックコードが削除される
PHPのコードを書いている人も自覚していないと思いますが、この影響はかなりあると考えられます。
近日中にgihyo.jpのセキュリティブログに詳しい情報を記述します。
追記:PHP5.3のコードを見てみたら、バックポートすべきではないのにバックポートされてました。つまり、PHP6がリリースされたらと言う問題ではなく、今ある問題になっています。一応、改修を提案するつもりですがどうなるか判りません。
追記2:結構、ページビューが多いですね。心配される方もいるかと思いますが、「Webアプリセキュリティ対策入門」やgihyo.jp等で書いているように、mb_check_encodingで文字エンコーディングチェックしていれば影響は受けません。
追記3: 前に読んだ時は斜め読みだったので、もう一度コードをよく見てみると一応必要そうなチェックは入っています。決めうちしているのは別の部分だったので対丈夫でしょう。