CreditsPHPPHPを使っている人ならば、phpinfo()の出力は見慣れていることと思う。これに似た以下のような画面を見たことがある人は少ないのではなかろうか。Credits"というPHP開発者を紹介する画面で、PHPのイースターエッグである。いうわけで、この辺のお話。イースターエッグとは本来この言葉は、復活祭(Easter)に出されるカラフルに彩色されたゆで卵のこと。イースターの日、この卵をあちこちに隠して見つけ出すという遊びをすることから、転じてコンピュータ業界では、ソフトウェアのちょっとした隠し機能を指す。2000では、特定の操作をすることでスタッフロールが表示される、なんてのが有名だった。PHPのイースターエッグPHPでは、GET引数の特殊なパラメタに、ちょっとしたイースターエッグが隠されている。これを発動させるには、php.iniの設定ファイル上で以下の通り設定されている必要がある(デフォルト設定)。On実際に見てみるには、Webサーバ上のどのPHPファイルでも良いので、以下のような引数を付ければ良い。便宜上、ここではtest.phpとして例示する。Engineロゴ画像test.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42PHPロゴ画像(パロディ)?=PHPE9568F36-D428-11d2-A769-00AA001ACF42歴史をひもとくと、本来はこのパロディ画像だけがイースターエッグと呼ぶべきものだったらしい。最近のバージョンのPHPでは、このパロディ画像機能だけは削除されている(理由は後述)。どのバージョンでどんな画像が出るかは、以下のページにまとめられている。http://blog.detectify.com/post/34559130700/do-you-dare-to-show-your-php-easter-eggセキュリティ的にどうなのかこのイースターエッグ、セキュリティ的にどうなのかという問いが色々あるだろうけど、一言でいえば「あまり問題無い」と言って良いと思う。着目点があるので、その辺の話が混乱されて語られることが多い。そのため、以下、ひとつひとつ解説する。Creditsはただのスタッフロールなので、phpinfo()のようにバージョン情報やインストール情報は一切含まれない。(phpinfoのパロディでしか無いのだが、そこを理解していない人が時々、これを「phpinfoだ!」と騒いだりする^^;)。よって、これが出ているからと言って何かセキュリティ的に問題なわけではない。PHPロゴ画像(パロディ風)この機能は、最近(5.5以上?)のPHPからは削られている。バージョンごとに違うパロディ画像が用意されていたため、画像によってPHPのバージョンが確定できてしまう点が嫌われたのだと思う。次に述べる通り、このイースターエッグ発動の時点でバージョン番号はレスポンスヘッダから分かるので、そこを問題とするのはちょっと違う(と思う)。バージョン露出とexpose_phpこのイースターエッグが気になる人は、バナー情報としてサーバ側のPHPのバージョンが分かってしまうのでは......ということを気にしているのだろう。結論から言えば「分かる」が、「それはイースターエッグのせいではない」。そもそもこのイースターエッグが発動するには、先に書いた通りphp.iniのexpose_phpがOnになっている必要がある。この場合、全てのPHPアプリのレスポンスヘッダには以下のような「X-Powered-By」ヘッダが付くので、PHPバージョンは元からダダ漏れである。charset=UTF-8つまり、バージョン情報を隠蔽したければそもそもexpose_phpをOffにするべきだし、もしそうしていればこのイースターエッグは発動しない。Creditsが見えたからと言って、それはphpinfoではない。重大なセキュリティ問題があるわけではない。見えた場合はexpose_phpがOnになっているから、バージョン情報を隠蔽したい人はOffにした方がいい。これは「X-Powered-Byを隠すため」であって、「イースターエッグを発動させないため」ではないことは理解しよう。関する罪」の情報公開請求をしました月別アーカイブはてなブログをはじめよう!ozumaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。