トップ «前の日記(2007-08-27 (月)) 最新 次の日記(2007-08-29 (水))»  

まちゅダイアリー


2007-08-28 (火)

時限装置つきの phpinfo()

おさかなラボ - phpinfo.phpとかやめようよより。 phpinfo() を記述したスクリプトファイルは他人に読まれないようにしようという話。

しかしそのPHPファイルをサイトのドキュメント・ルートに、「phpinfo.php」や「info.php」などと非常に分かりやすい名前で設置している例を非常によく見かける。

本人はすぐ消すから大丈夫だと思ってそうしているのだろうが、人間は忘れる動物である。その証拠に私が発見した事例は全て「運用中」のサイトであり、つまりは「消し忘れ」であった。

リンク先ではスクリプトファイル名をランダムに決める案が提案されている。 せっかくなので他の方法も考えてみた。 「消し忘れ」が原因なら、一定時間が経過すると読めなくなる phpinfo() があってもいいかも。

以下はサンプル。 ファイルを作成してから24時間が経過すると、自動的に phpinfo() が実行されなくなる。

<?php
if (filemtime(__FILE__) + 60 * 60 * 24 > time()) {
  phpinfo();
}

ファイルの時間は mtime を使って取得しているので、

$ touch phpinfo.php

とすると有効期間を延長できる。

まぁ、ここまでやるのなら、素直にHTTP認証を設定したほうがいいかもしれないけど。

Tags: PHP
本日のツッコミ(全2件) [ツッコミを入れる]
かなだ (2007-08-29 (水) 10:18)

本当はphpinfo()自体にそういう機能をつけるべきなんでしょうが、今までのPHPコミュニティの対応を見ているとそれはあまり期待できないですよね……。<br>phpinfo.phpの設置例(googleで沢山ヒットする)をことごとく上記のようなコードに置き換えてやればリスクは減るでしょうね。そこまで気力ないですがorz

まちゅ (2007-08-30 (木) 00:22)

まぁ、本質的には設置した人が忘れずに取り除くべきですからねぇ。<br>あとは、サーバのバージョンを隠す話と同じで、見せることが本当に危険かどうかも議論の余地があるかもしれません。