利用者:Sxonx7526/Web server directory index
Web server directory indexは、HTTPクライアント (通常はWeb ブラウザ) が、ディレクトリ構造内の実際の Web ページではなく、ディレクトリ構造を指すURLを要求すると、 Web サーバーからファイルやメインページを返すというシステムである。
このようなページの一般的なファイル名はindex.htmlだが、最近のほとんどのHTTP サーバーは、サーバーがインデックスとして使用できるファイル名の構成可能なリストを提供する。サーバーがサーバー側スクリプトをサポートするように構成されている場合、リストには通常、動的コンテンツをインデックス ページとして使用できるようにするエントリが含まれる。ただし、index.php、index.asp、index.shtmlなどの言語を明的に指定する方がより適切な場合があるが、指定しなくてもよい。例としては、オープン ソースWeb サーバーApacheが挙げられる。この場合、ファイル名のリストは、メイン サーバー構成ファイルまたはそのディレクトリの構成ファイル内のDirectoryIndex [1]ディレクティブによって制御される。ファイル拡張子をまったく使用せず、コンテンツ配信方法に中立であり、サーバーがコンテンツ ネゴシエーションを通じて最適なファイルを自動的に選択するように設定することができる。
サーバーが構成されている名前のファイルを見つけることができない場合、サーバーはエラー(通常は403 Index Listing Forbiddenまたは404 Not Found) を返す。もしくは、ディレクトリ内のファイルを構成する独自のインデックス ページを生成する。通常、autoindexという名前のこのオプションも構成可能である。 [2]
歴史
[編集]Web サーバーがサブディレクトリごとにデフォルト ファイルを提供するというものは、 NCSA HTTPd 0.3beta (1993 年 4 月 22 日) の時点でサポートされて、[3]ディレクトリ内のindex.htmlファイルをデフォルトで提供した。[3] [4] これは、少なくとも 2.17beta (1994 年 4 月 5 日) 以降、 CERN HTTPdによって採用されていた。デフォルトでは、NCSA 由来のindex.htmlに加えて、Welcome.htmlとwelcome.htmlがサポートされている。 [5]
後の Web サーバーは通常、このデフォルトのファイル スキームを何らかの形でサポートする。通常、これは構成可能であり、 index.htmlはデフォルトのファイル名の 1 つである。 [6] [7] [8]
実装
[編集]場合によっては、ウェブサイトのホームページが、ジオターゲティングを使用する大規模なサイトの言語オプションのメニューになることがある。また、コンテンツ ネゴシエーションなどを使用して、この手順を回避することもできる。
特定のディレクトリ内に既知のindex.*ファイルが存在しない場合、代わりにディレクトリ内のファイルの自動生成リストを提供するように Web サーバーを構成できる。たとえば、Apache Web サーバーでは、この動作は mod_autoindex モジュール[9]によって提供され、Web サーバー構成ファイルの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日). “Directory listings” (英語). Apache foundation: HTTPd server project. 2021年11月16日閲覧。
- ^ a b “WWW-Talk Apr-Jun 1993: NCSA httpd version 0.3”. 1997.webhistory.org. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “NCSA HTTPd DirectoryIndex” (January 31, 2009). January 31, 2009時点のオリジナルよりアーカイブ。 Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “Change History of W3C httpd” (June 5, 1997). June 5, 1997時点のオリジナルよりアーカイブ。 Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “mod_dir - Apache HTTP Server Version 2.4 § DirectoryIndex Directive”. httpd.apache.org. 2020年11月12日時点のオリジナルよりアーカイブ。2021年1月13日閲覧。
- ^ “NGINX Docs | Serving Static Content”. docs.nginx.com. 2020年11月11日時点のオリジナルよりアーカイブ。2021年1月13日閲覧。
- ^ “Default Document <defaultDocument> | Microsoft Docs”. docs.microsoft.com. 2020年12月8日時点のオリジナルよりアーカイブ。2021年1月13日閲覧。
- ^ “mod_autoindex - Apache HTTP Server Version 2.4”. httpd.apache.org. 2021年1月13日閲覧。
- ^ “core - Apache HTTP Server Version 2.4 § Options Directive”. httpd.apache.org. 2021年1月13日閲覧。
- ^ “IBM Docs”. IBM (2021年3月8日). 2021年5月7日閲覧。
- ^ “A6:2017-Security Misconfiguration”. OWASP. 2021年5月7日閲覧。
- ^ “Path Traversal”. OWASP. 2021年5月7日閲覧。