MW211 EXIT

devlog
PHP/Index_of画面の活用
2011年12月05日
「http://…/data/」とかってブラウザから指定した時に
その配下に「index.htm」とかがないと、ファイル一覧が表示される場合がある。
「Index of ~」って画面だ。

これは情報漏洩の元凶みたいなもんで、忌み嫌われている。
ネットで検索しても、表示させない方法ばかりがとりざたされている。

表示させない方法は、「.htaccess」に以下を記述して、そのフォルダに置けばよい。
┌──────────────────────────────────────┐
│Options -Indexes                                                            │
└──────────────────────────────────────┘
たぶん、「htpd.conf」とかに設定した方がいいのだろうけど、まずはここまで。

では、これを表示させたい場合は?(あまのじゃく!)
┌──────────────────────────────────────┐
│Options +Indexes                                                            │
└──────────────────────────────────────┘
記述をこう書き換えればよい(「-」が「+」になっただけ)。

さて、表示させてどうするの?
ま、PHPでhtmファイル一覧でも取得してみるか。(対象が「http://…/data/」の場合)
┌──────────────────────────────────────┐
│$dir = 'http://…/data/';                                                   │
│$return = array();                                                          │
│$source_list = @file($dir);                                                 │
│if ($source_list) {                                                         │
│  foreach ($source_list as $value) {                                        │
│    if (preg_match('/\.htm\"/', $value)) {                                  │
│      $file = trim(preg_replace('/^.*href\=\"|\.htm\".*$/', '', $value))    │
│            . '.htm';                                                       │
│      $return[] = $file;                                                    │
│    }                                                                       │
│  }                                                                         │
│}                                                                           │
│print_r($return);                                                           │
└──────────────────────────────────────┘
ま、他にバリエーションはありそうだけど…。

「Index of ~」画面の仕様も明確じゃないし、
そもそもセキュリティ的に?なので、お遊び程度に。
分類:PHP