今回は,12月15日に正式公開されたPHP 5.0.3およびPHP 4.3.10に関する情報と,FirefoxやMozillaのXML言語「XUL」を使ってPHPでリッチ・クライアントを構築する話題について紹介する。

PHPの開発状況

 PHP 5.0.0が正式リリースされてから5カ月ほどが経過し,次期マイナーリリース版であるPHP 5.1.xの開発が進んでいる。平行してPHP 5.0.x系および旧版にあたるPHP 4.3.x系のメンテナンス作業も行われている。ここでは,これらの最新版に関する開発状況を紹介する。

PHP4およびPHP5で複数のセキュリティ上のぜい弱性が見つかる

 2004年12月15日にHardened-PHP ProjectよりPHPに関する複数のセキュリティ上のぜい弱性が報告された。このぜい弱性は,ローカルまたはリモートから任意のコードが実行される危険性があるという深刻なものであり,PHP 4およびPHP 5に存在する。同日,これらのぜい弱性を修正したPHP 4.3.10およびPHP 5.0.3が正式に公開された。旧バージョンのユーザーは早期のバージョン更新が推奨されている。以下にこれらのぜい弱性の概要を示す。

1.pack() における入力パラメータのチェックが不十分でバッファオーバーフローを生じ,PHPスクリプトから任意のコードを実行されてしまう。
2.unpack()における入力パラメータのチェックが不十分でバッファオーバーフローを生じ,ヒープ領域にあるデータを盗み見られてしまう。
3.safe_mode_exec_dirによる制限がマルチスレッド環境ですり抜けられてしまう
4.safe_modeにおける特定のパスへのアクセス制限をバイパスされてしまう。これは,内部でパスの変換に使用されるrealpath()関数が,OpenBSDなどの一部のOSにおいて,長いファイル名を丸めてしまうため,任意のファイルをincludeなどで読み込めてしまうというものである。
5.unserialize()における負方向の参照の処理に問題があり,メモリー開放時に任意のコードを実行される可能性がある。また,解放後のメモリーを参照できるという問題があり,危険なコードを設定されてしまう可能性がある。

これらのぜい弱性に関する詳細については,http://www.hardened-php.net/advisories/012004.txtを参照してほしい。

PHP 5.0.3正式公開

 2004年12月15日にPHP 5.0.x系の最新版にあたるPHP 5.0.3が正式公開された。このPHP 5.0.3は,PHPの公式Webサイトからダウンロード可能である。PHP 5.0.3における変更点はバグ修正(約65件)が主であるが,若干の機能拡張も行われている。PHP 5.0.xのユーザーは,バージョン更新が推奨されている。変更点の詳細については,PHP5 ChangeLog(http://www.php.net/ChangeLog-5.php#5.0.3)を参照されたい。PHP 5.0.3における主な変更点を以下に紹介する。

1.ロケールによらない浮動小数点出力形式のサポート

 printfなどの書式付き出力を行う関数において,浮動小数点数でロケールによらず「 . 」(ドット)を小数点として使用する修正子(modifier)として「%F」が導入された。小数点表示はロケールに依存し,「 . 」(ドット)または「 , 」(カンマ)を使用する。%Fを指定することで,ロケールによらず.(ドット)を使用することができる。国際化されたアプリケーションを構築する際には有用であろう。リスト1に例を示す。

リスト1●ロケール指定出力の例


 Fedora Core 3 Linuxの場合,リスト1の出力は以下のようになる。

ja_JP 3.140000 3.140000
nl_NL 3,140000 3.140000

 %fの場合,日本語をあらわすja_JPロケールでは小数点はドットで表されるが,オランダ語を表すnl_NLロケールではカンマで表されている。一方,%Fの場合にはいずれの場合もドットで表されている。

2.is_subclass_of()が拡張される

 is_subclass_of()は,第一引数に指定したオブジェクトが第二引数に指定したクラスのサブクラスである場合にTRUEを返す関数である。PHP 5.0.3以降では,第一引数に,クラスの名前を指定できるようになった。リスト2に例を示す。

リスト2●is_subclass_of()の例

 リスト2の出力は,以下のようになる。

MyShopのサブクラス
MyShopのサブクラス

PHP 4.3.10正式公開

 PHP 5.0.3と同日の12月15日にPHP4.3.x系の次期バージョンにあたるPHP4.3.10が公開された。このPHP 4.3.10においては,約30件のバグ修正が行われている。また,若干の機能追加として,前記の浮動小数点出力フォーマットに関する修正子%Fの追加,そしてfoeachループ処理の高速化(PHP5から移植)に関する変更が行われている。なお,PHP 4.xのユーザーに対して,本バージョンへの早期の更新が推奨されているが,空文字列をvar_export()のキーとして指定した場合の動作が前バージョンと異なることが確認されており,移行に際しては注意が必要である。

 変更点の詳細については,PHP4 ChangeLog(http://www.php.net/ChangeLog-4.php#4.3.10)を参照されたい。

 次に,PEAR::XML_XULでリッチ・クライアントを構築する方法を紹介する。