PHPをインストールした状態のままで使用していると、HTTPの応答ヘッダーにPHPのバージョンが表示され、セキュリティーホールを狙った攻撃を受ける可能性があるのでバージョン情報を隠す方法をご紹介します。
ヘッダー情報のサンプル(作業前)
Google Chrome をお使いの方は、F12 → Network → Name Path から該当のページをクリックすればヘッダー情報を見ることが出来ます。その他にも確認する方法は色々あります。
Cache-Control:no-cache, must-revalidate, max-age=0 Connection:keep-alive Content-Encoding:gzip Content-Type:text/html; charset=UTF-8 Date:Sat, 12 Jul 2014 11:35:03 GMT Expires:Wed, 11 Jan 1984 05:00:00 GMT Link:<http://vpshiroba.com/>; rel=shortlink Pragma:no-cache Server:nginx Transfer-Encoding:chunked Vary:Accept-Encoding X-Pingback:http://vpshiroba.com/xmlrpc.php X-Powered-By:PHP/5.4.1
PHPのバージョンが、「PHP/5.4.1」と表示され大変危険な状態です。早速、バージョンを表示しないように php.ini を修正します。
PHPのバージョンを隠す
php.ini
を修正します。
expose_php = On
→ expose_php = Off
に変更します。
;;;;;;;;;;;;;;;;; ; Miscellaneous ; ;;;;;;;;;;;;;;;;; ; Decides whether PHP may expose the fact that it is installed on the server ; (e.g. by adding its signature to the Web server header). It is no security ; threat in any way, but it makes it possible to determine whether you use PHP ; on your server or not. ; http://php.net/expose-php expose_php = On ↓ expose_php = Off
設定反映
// php5-fpmの場合 # /etc/init.d/php5-fpm reload // Apache2の場合 # /etc/init.d/apache2 reload
ヘッダー情報のサンプル(作業後)
ヘッダー情報確認すると、「X-Powered-By:」の項目が消えたことが分ります。これでPHPバージョン表示の対策は完了です。
Cache-Control:no-cache, must-revalidate, max-age=0 Connection:keep-alive Content-Encoding:gzip Content-Type:text/html; charset=UTF-8 Date:Sat, 12 Jul 2014 12:04:53 GMT Expires:Wed, 11 Jan 1984 05:00:00 GMT Link:<http://vpshiroba.com/>; rel=shortlink Pragma:no-cache Server:nginx Transfer-Encoding:chunked Vary:Accept-Encoding X-Pingback:http://vpshiroba.com/xmlrpc.php
サーバーを構築するときは、バージョンを隠す事を常に意識して構築してくださいね。
尚、PHPプログラムのバージョンを取得する関数 phpversion()
には影響はありません。