[ Apache ] .htaccess でディレクトリ内のファイル一覧表示を制御する ( -Indexes )

Pocket

Apache に限らず Web サーバでは、URL がファイル名まで記述されていればそのファイルを開きます。しかし、ディレクトリ名までしか URL に設定されていない場合は、そのディレクトリ配下の index.html や index.php が表示されます。ただし、これも設定次第です。

スポンサーリンク

また、ディレクトリ名までの URL のリクエストのがあった場合に、そのディレクトリ配下に index.html や index.php が存在しない場合には Apache のデフォルト設定では、ディレクトリ内のファイルの一覧がレスポンスで返されてしまいます。うっかり大事なファイルを置いてしまっていた場合は、情報漏洩の原因となります。ファイルをうっかり置いておくことも重大なオペミスでありシステム設定以上の大問題ですが、せめてシステム的にはファイルの一覧をレスポンスで返さなくしておくことも大切だと思います。

ディレクトリ内のファイル一覧が表示される httpd.conf の設定例
<IfModule dir_module>
    DirectoryIndex index.php index.html # ディレクトリへのリクエスト時に表示するファイル名
</IfModule>

<Directory "/path/to/doc_root">

    Options Indexes FollowSymLink # インデックス表示を有効にしている( Indexes の設定でファイルリストをレスポンスで返す)

    AllowOverride All             # .htaccess を読み込むために All にする必要があり

    Order allow,deny
    Allow from all

</Directory>
.htaccess でファイルの一覧表示を制御する

社内、学内用の Web サーバなどでは、ディレクトリ内のファイルの一覧表をレスポンスで返すことをデフォルト動作としておきたいこともあると思います。そのような時でも、ある特定のディレクトリだけは一覧表示させたくないような場合は、そのフォルダ内にだけ .htaccess ファイルを作成してアクセス制御を行うことができます。

すべてのディレクトリをファイルリストの一覧表示を禁止したい場合には、DOCUMENT_ROOT に .htaccess ファイルを配置しておけばアクセス制御することができます。上位階層のディレクトリに配置した .htaccess の設定が下位のディレクトリに引き継がれます。下位ディレクトリに 上位階層のディレクトリとは別の .htaccess があれば下位ディレクトリの .htaccess の設定が優先されます。

なお、.htaccess で制御するためには、httpd.conf の AllowOverride を修正する必要があります。上記のサンプルでは AllowOverride All としています。

.htaccess の設定方法

# 一覧表示を禁止する場合
Options -Indexes 

# 一覧表示を許可する場合
Options Indexes 

 

会社の悪事はどんどん流出させても良いですが、お客様の個人情報は駄目ですね。ただし、流出という手段よりは全うに告発したほうが良いでしょう。

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *