Verzeichnisindex des Webservers

Article

August 18, 2022

Wenn ein HTTP-Client (im Allgemeinen ein Webbrowser) eine URL anfordert, die auf eine Verzeichnisstruktur statt auf eine tatsächliche Webseite innerhalb der Verzeichnisstruktur verweist, stellt der Webserver im Allgemeinen eine Standardseite bereit, die oft als Haupt- oder " index“-Seite. Ein gebräuchlicher Dateiname für eine solche Seite ist index.html, aber die meisten modernen HTTP-Server bieten eine konfigurierbare Liste von Dateinamen, die der Server als Index verwenden kann. Wenn ein Server so konfiguriert ist, dass er serverseitiges Skripting unterstützt, enthält die Liste normalerweise Einträge, die es ermöglichen, dynamische Inhalte als Indexseite zu verwenden (z. B. index.cgi, index.pl, index.php, index.shtml, index.jsp, default.asp), auch wenn es sinnvoller sein kann, die HTML-Ausgabe (index.html.php oder index.html.aspx) noch anzugeben, da dies nicht selbstverständlich ist. Ein Beispiel ist der beliebte Open-Source-Webserver Apache, bei dem die Liste der Dateinamen durch die DirectoryIndex-Direktive in der Hauptserver-Konfigurationsdatei oder in der Konfigurationsdatei für dieses Verzeichnis gesteuert wird. Es ist möglich, überhaupt keine Dateierweiterungen zu verwenden und gegenüber Inhaltsbereitstellungsmethoden neutral zu sein und den Server so einzustellen, dass er automatisch die beste Datei durch Inhaltsverhandlung auswählt. Wenn der Server keine Datei mit einem der in seiner Konfiguration aufgeführten Namen finden kann, gibt er möglicherweise entweder einen Fehler zurück (normalerweise 403 Index Listing Forbidden oder 404 Not Found) oder generiert eine eigene Indexseite, die die Dateien im Verzeichnis auflistet. Normalerweise ist diese Option, die oft als Autoindex bezeichnet wird, auch konfigurierbar.

Geschichte

Ein Schema, bei dem der Webserver eine Standarddatei pro Unterverzeichnis bereitstellt, wurde bereits in NCSA HTTPd 0.3beta (22. April 1993) unterstützt, das standardmäßig die Datei index.html im Verzeichnis bereitstellt. Dieses Schema wurde dann von CERN HTTPd seit mindestens 2.17beta (5. April 1994) übernommen, dessen Voreinstellung Welcome.html und welcome.html zusätzlich zu der von NCSA stammenden index.html unterstützt. Spätere Webserver unterstützen typischerweise dieses Standarddateischema in der einen oder anderen Form; Dies ist normalerweise konfigurierbar, wobei index.html einer der Standarddateinamen ist.

Umsetzung

In einigen Fällen kann die Startseite einer Website ein Menü mit Sprachoptionen für große Websites sein, die Geotargeting verwenden. Dieser Schritt kann beispielsweise auch durch Content Negotiation vermieden werden. In Fällen, in denen keine bekannte index.*-Datei in einem bestimmten Verzeichnis vorhanden ist, kann der Webserver so konfiguriert werden, dass er stattdessen eine automatisch generierte Liste der Dateien in dem Verzeichnis bereitstellt. Beim Apache-Webserver beispielsweise wird dieses Verhalten durch das Modul mod_autoindex bereitgestellt und durch die Direktive Options +Indexes in den Konfigurationsdateien des Webservers gesteuert. Diese automatisierten Verzeichnislisten stellen manchmal ein Sicherheitsrisiko dar, da sie vertrauliche Dateien auflisten, die möglicherweise nicht für den öffentlichen Zugriff bestimmt sind, in einem Prozess, der als Verzeichnisindizierungsangriff bezeichnet wird. Eine solche Sicherheitsfehlkonfiguration kann auch bei anderen Angriffen hilfreich sein, wie z. B. einem Pfad- oder Verzeichnisdurchquerungsangriff.

Auftritte

Beim Zugriff auf ein Verzeichnis können sich die verschiedenen verfügbaren Indexmethoden auch unterschiedlich auf die Nutzung von Betriebssystemressourcen (RAM, CPU-Zeit usw.) und damit auf die Leistung von Webservern auswirken. Von der schnellsten zur langsamsten Methode, hier ist die Liste: Verwendung einer statischen Indexdatei, z. B.: index.html usw.; Verwenden einer Webserver-Funktion, die normalerweise Autoindex heißt (wenn keine Indexdatei vorhanden ist), damit der Webserver mithilfe seines internen Moduls automatisch eine Verzeichnisliste erstellt; Verwenden einer interpretierten Datei, die vom internen Programminterpreter des Webservers gelesen wird, z. B.: index.php; Verwenden eines ausführbaren und kompilierten CGI-Programms, z. B.: index.cgi.

Referenzen