at posts/single.html

時限装置つきの 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認証を設定したほうがいいかもしれないけど。

関連する日記