
HTTPクライアント (通常はWeb ブラウザ)が、ディレクトリ構造内の実際の Web ページではなく、ディレクトリ構造を指すURLを要求すると、 Web サーバーは一般に、メイン ページまたは「インデックス」ページと呼ばれるデフォルトのページを提供します。
このようなページの一般的なファイル名は ですが、最近の HTTP サーバーのほとんどは、サーバーがインデックスとして使用できるファイル名の設定可能なリストを提供しています。 サーバーがサーバー側スクリプトをサポートするように設定されている場合、リストには通常、動的コンテンツをインデックス ページとして使用できるようにするエントリ (例: 、、、、、、) が含まれますが、HTML出力(または ) を指定する方が適切な場合もあります。これは当然のことではありません。一例として、人気のオープン ソースWeb サーバーであるApacheが挙げられます。Apache では、ファイル名のリストはメイン サーバー設定ファイルまたはそのディレクトリ の設定ファイルの[ 1 ]ディレクティブによって制御されます。 ファイル拡張子をまったく使用せず、コンテンツ配信方法に中立になり、コンテンツ ネゴシエーションによって最適なファイルを自動的に選択するようにサーバーを設定することもできます。
index.htmlindex.cgiindex.plindex.phpindex.shtmlindex.jspdefault.aspindex.html.phpindex.html.aspxDirectoryIndex
サーバーが設定で指定された名前のファイルを見つけられない場合、エラー(通常は403 Index Listing Forbiddenまたは404 Not Found )を返すか、ディレクトリ内のファイルをリストする独自のインデックスページautoindexを生成します。このオプション(通常は)も設定可能です。[ 2 ]
歴史
[編集]ウェブサーバーがサブディレクトリごとにデフォルトのファイルを提供する方式は、NCSA HTTPd 0.3beta (1993年4月22日) ですでにサポートされており、[ 3 ]デフォルトではindex.htmlディレクトリ内のファイルを提供する。[ 3 ] [ 4 ]この方式は、少なくとも2.17beta (1994年4月5日) 以降CERN HTTPdに採用されており、デフォルトではNCSA発祥の に加えて とWelcome.htmlをサポートしている。[ 5 ]welcome.htmlindex.html
最近のウェブサーバーでは、このデフォルトのファイルスキームが何らかの形でサポートされることが多く、通常は設定可能で、index.htmlデフォルトのファイル名の1つになっています。[ 6 ] [ 7 ] [ 8 ]
実装
[編集]
ジオターゲティングを活用した大規模サイトでは、ウェブサイトのホームページに言語オプションのメニューが表示される場合があります。また、コンテンツネゴシエーションなどを使用することで、この手順を省略することも可能です。
特定のディレクトリ内に既知のファイルが存在しない場合index.*、代わりにディレクトリ内のファイルの自動生成リストを提供するようにウェブサーバーを設定することができます。例えばApacheウェブサーバーでは、この動作はmod_autoindexモジュール[ 9 ]によって提供され、ウェブサーバー設定ファイルOptions +Indexesのディレクティブ[ 10 ]によって制御されます。これらの自動ディレクトリリストは、ディレクトリインデックス攻撃と呼ばれるプロセスで、公開を意図していない機密ファイルを列挙するため、セキュリティリスクとなる場合があります。[ 11 ]このようなセキュリティ設定ミス[ 12 ]は、パストラバーサル攻撃やディレクトリトラバーサル攻撃などの他の攻撃にも利用される可能性があります。[ 13 ]
公演
[編集]ディレクトリにアクセスする場合、利用可能なさまざまなインデックス方法によって、OS リソース ( RAM、CPU 時間など) の使用、ひいては Web サーバーのパフォーマンスにもさまざまな影響が及ぶ可能性があります。
最速の方法から最遅の方法まで、リストを以下に 示します。
- 静的インデックス ファイルを使用する (例:
index.htmlなど)。 - 通常autoindexと呼ばれる Web サーバー機能(インデックス ファイルが存在しない場合) を使用して、Web サーバーが内部モジュールを使用してディレクトリ リストを自動生成できるようにします。
- Web サーバーの内部プログラム インタープリターによって読み取られた解釈済みファイルを使用する (例:
index.php;) - CGI 実行可能ファイルおよびコンパイル済みプログラムを使用します。例:
index.cgi。
参考文献
[編集]- ^ "mod_dir - Apache HTTP Server" . httpd.apache.org . 2014年5月30日閲覧。
- ^ ASF Infrabot (2019年5月22日). 「ディレクトリリスト」 . Apache Foundation: HTTPdサーバープロジェクト. 2021年11月16日閲覧。
- ^ a b 「WWW-Talk 1993年4月~6月: NCSA httpdバージョン0.3 」。1997.webhistory.org 。
- ^ "NCSA HTTPd DirectoryIndex" . 2009年1月31日.オリジナルの2009年1月31日時点のアーカイブ。
- ^ 「W3C httpdの変更履歴」 1997年6月5日。 1997年6月5日時点のオリジナルよりアーカイブ。
- ^ "mod_dir - Apache HTTP Server バージョン 2.4 § DirectoryIndex ディレクティブ" . httpd.apache.org . 2020年11月12日時点のオリジナルよりアーカイブ。2021年1月13日閲覧。
- ^ 「NGINX Docs | 静的コンテンツの提供」 . docs.nginx.com . 2020年11月11日時点のオリジナルよりアーカイブ。2021年1月13日閲覧。
- ^ 「既定のドキュメント <defaultDocument> | Microsoft Docs」 . docs.microsoft.com . 2020年12月8日時点のオリジナルよりアーカイブ。2021年1月13日閲覧。
- ^ "mod_autoindex - Apache HTTP Server バージョン 2.4" . httpd.apache.org . 2021年1月13日閲覧。
- ^ "core - Apache HTTP Server バージョン 2.4 § オプションディレクティブ" . httpd.apache.org . 2021年1月13日閲覧。
- ^ 「IBM Docs」 . IBM . 2021年3月8日. 2021年5月7日閲覧。
- ^ 「A6:2017-セキュリティの誤った構成」 OWASP . 2021年5月7日閲覧。
- ^ 「パストラバーサル」 . OWASP . 2021年5月7日閲覧。