Webサーバーのインデックスページ
HTTPクライアント(一般的にはウェブブラウザ)が、サーバ内のディレクトリ構造内に実在するコンテンツではなく、ディレクトリ構造そのものを指すURLを要求した場合、ウェブサーバーは一般的に、メインページまたは「インデックスページ」と呼ばれるデフォルトのページを提供する。
インデックスページの一般的なファイル名は「index.html
」だが、最近のほとんどのHTTPサーバーは、インデックスページとして使用できるファイル名として利用可能なリストを提供している。サーバーサイドスクリプティングをサポートするようにサーバーが設定されている場合、このリストには通常、動的コンテンツをインデックスページとして使用できる候補(index.cgi
、index.pl
、index.php
、index.shtml
、index.jsp
、default.asp
など)が含まれる。このファイル名のリストは、サーバー設定ファイルの DirectoryIndex ディレクティブ(Apache HTTP Serverの場合)か、そのディレクトリの設定ファイルで制御される。ファイル拡張子を全く使わず、コンテンツ配信方法に中立で、content negotiationによって最適なファイルをサーバーが自動的に選ぶように設定することも可能である。
サーバがディレクトリ構造に対するURLでリクエストを受け付けたものの、設定でリストされた名前のインデックスファイルを見つけられない場合、 エラー(通常は403 Index Listing Forbiddenまたは404 Not Found)を返すか、ディレクトリ内のファイルを一覧化した独自のインデックスページを生成する。後者の自動での一覧生成は、通常、autoindexと呼ばれる。
実装
URLで指定されたディレクトリ内に、既知の index.*
ファイルが存在しない場合、 代わりにディレクトリ内のファイルの一覧を自動的に生成するように ウェブサーバを設定することができる(上記「autoindex」)。例えば Apache HTTP Serverでは、この動作は mod_autoindex モジュールによって提供され、サーバ設定ファイルの Options +Indexes ディレクティブによって制御される。このような自動で生成されるディレクトリ一覧は、一般ユーザからのアクセスを意図していない可能性のある機密ファイルを列挙するため、ディレクトリインデックス攻撃と呼ばれるセキュリティ上のリスクになることがある。このようなセキュリティの設定ミスは、ディレクトリトラバーサル攻撃のような他の攻撃にも寄与する可能性がある。