2014年末になりますが、著名なPHP開発者・Anthony Ferrara(ircmaxell)氏のブログに、PHP Install Statisticsという記事が掲載されました。
この記事では、W3Techsの統計を元に、現在Web上に公開されているPHPで開発されたサイトのバージョン情報を調べ、多くのサイトが、脆弱でサポートの切れたバージョンを使用しているかを解説しています。
この記事によると、PHP製サイトのおよそ7割強は、脆弱性があるか、又は既にサポートが切れているバージョンのPHPを使用している、としています。
安全なバージョンのPHPとは、どういったバージョンのことを指すかというと、「PHP開発チームによるサポートが続いているバージョンの、最新安定版」です。2017年4月1日現在、5.6.X、7.0.X、7.1.Xが、これに該当します。
PHP7 は、PHP5 や PHP4 と比較してパフォーマンスが大幅に強化されていますので、虚弱性へのリスク対応だけでなく、パフォーマンス改善にも繋がります。
※弊社でのバージョンアップ例
・PHPバージョンアップ(PHP4.X→PHP5.6以上)
・PHPバージョンアップ(PHP5.X→PHP7.1以上)
バージョンアップは、必要性の見極め、対応箇所の洗い出し、対応方法など、経験や知識の有無により、必要工数が大きく変化する可能性があります。
例えば、DBの接続方法にしても、PHP から DB アクセスする方法は多岐に渡ります。
古いPHPサイトでよく使用されているPEAR::DBを用いた接続ですが、PHP5.1.0以降はPDOと呼ばれるデータベース接続クラスを標準で利用できます。
PEAR::DBよりも高速に動作するため、「PDOの設定がされていない環境で作成する」のような特別な理由がなければ、PDOを利用する方がいいでしょう。
ただし、サイト内のプログラムコーディングを全てPEAR::DBからPDOに変更すると、膨大な作業時間や、複雑なビジネスロジックを同様に再コーディングすることによるミスのリスクも高まります。
弊社ではPEAR::DBからPDOのラッピング用プログラムを利用することにより、最小限の工数と修正箇所で抑えております。
ラッピング(wrapping)とは、ある機能を内包して、別の形式のシステムで利用できるようにすることです。
つまり、PEAR::DBの関数を呼び出しているようで、実は、同じ名前で同じ処理をするように作られたPDOの関数により処理が実行されているのです。
このように、弊社では豊富なシステム開発、運用経験をもとに古いPHPサイトのバージョンアップを、必要最低限のコストとリスクで行っております。