PHPは,数え切れないほどのWebサイトで使われている非常に有名なプログラミング言語である。基本的にはスクリプト言語であり,実行時にコンパイルされる。PHPは非常に多くのコミュニティによって支えられており,様々な機能を提供する膨大な数のオープン・ソース・ライブラリが公開されている。「WordPress」といった人気アプリケーションも,PHPで記述されている。ただし,PHPにもセキュリティの問題は存在する。
PHPのセキュリティ問題は,長年にわたって多くの開発者が問題の修正に取り組んできた。しかし,常に迅速な対応が行われてきたわけではなく,被害を受けるユーザーも存在した。2006年末には,PHP開発者のStefan Esser氏が,この状況に嫌気がさして,PHP Security Response Teamを辞任した。
Esser氏は自身のブログで,「(辞任した理由は)いくつかあるが,最も決定的だったのは,PHPそのもののセキュリティを高めようといくら頑張っても無駄な努力だと悟ったことだ」と説明した。さらに「PHP開発陣はPHPのセキュリティ問題の責任をユーザーに転嫁することには熱心だが,誰かがPHPそのもののセキュリティを批判しようとすると,たちまち好ましからざる人物として目の敵にする。私がPHPのセキュリティ・ホールを公表したり,Suhosinの開発を進めたことで,何度彼らから不忠の裏切り者呼ばわりされたことか」とPHP開発陣を批判した。
さらにEsser氏は,その記事の最後に「一般のPHPユーザーに対する(私の辞任の)影響としては,今後発表するレポートでは(PHPの)セキュリティ・ホールへの対策の遅れを隠すことなく指摘するつもりだ。中にはパッチがまだ用意されていない時期に発表されるレポートもあるだろうが,それはPHPセキュリティ対策チームが今後数カ月は修正プログラムを提供することを拒んでいるからだ。また,これからもPHPの様々なセキュリティ・ホールについてレポートするだろう」と書いている。
幸いなことに,Esser氏はPHPの強力なセキュリティ・パッチである「Suhosin」を開発している。この名前は韓国語で「守護神」を意味する言葉だ。PHPを使っているのにSuhosinを知らないとしたら,それは大きな損失だ。なぜなら,Suhosinが提供する素晴らしいセキュリティ拡張機能を使っていないからだ。
SuhosinのWebサイトの「Configuration」というページを参照すると,Suhosinが提供する全構成オプションのリストを入手できる。例えば,Suhosinを使うと,Cookie機能,セッション・パラメータ,SQLパラメータなど,PHPアプリケーションの重要な要素をより細かく制御できる。また,様々な危険を招く可能性を効率的に排除できる。
Suhosinをインストールした場合は,PHPを再コンパイルする必要がある。これはLinuxプラットフォームでは簡単に実行できるが,WindowsにはPHPコンパイラが標準提供されていないので,多少手間がかかる。Windowsで必要なツールを使用できる場合,またはLinuxシステム上でPHPを使用している場合は,Suhosinには明らかにインストールするだけの価値がある。
簡単に手順を説明すると,まずPHPソース・コード,Suhosinパッチ,Suhosinエクステンション・ソース・コードをダウンロードする。次にパッチを適用して,PHPをコンパイルする。PHPのコンパイルが終わったら,Suhosinエクステンションをコンパイルする。Suhosinエクステンションのコンパイルが終わったら,PHPにエクステンションをロードするように指示する行をphp.iniファイルに追加する。これでインストールは完了だ。ここからは,php.iniファイルにパラメータを追加することによって,ニーズに正確に一致するようにSuhosinを構成できる。ただし,Webサイトにも記述されているように,ほとんどの機能はデフォルト構成のままで使用できるので,Suhosinを導入する前に各種設定の説明をじっくり読む必要はない。
筆者が知るかぎりでは,Windows向けにSuhosinと一緒にプリコンパイルされたPHPパッケージは存在しない。読者の中にそのようなPHPパッケージが存在することを知っている人がいたら,その入手先を教えて頂きたいと思う。
Suhosinが使われていないPHP環境で開発されたPHPベースのアプリケーションには,本来望ましいレベルをはるかに超えるぜい弱性が存在する。そのようなPHP環境を使っている読者はぜひSuhosinサイトを参照してほしい。そうすれば,SuhosinがPHPプラットフォームに必要不可欠であることを理解してもらえると思う。