Index van webserver-directory

Article

July 5, 2022

Wanneer een HTTP-client (meestal een webbrowser) een URL aanvraagt ​​die verwijst naar een directorystructuur in plaats van een daadwerkelijke webpagina binnen de directorystructuur, zal de webserver over het algemeen een standaardpagina aanbieden, die vaak wordt aangeduid als een hoofd- of " indexpagina. Een veelgebruikte bestandsnaam voor zo'n pagina is index.html, maar de meeste moderne HTTP-servers bieden een configureerbare lijst met bestandsnamen die de server als index kan gebruiken. Als een server is geconfigureerd om server-side scripting te ondersteunen, bevat de lijst meestal vermeldingen waarmee dynamische inhoud als indexpagina kan worden gebruikt (bijv. index.cgi, index.pl, index.php, index.shtml, index.jsp, default.asp), hoewel het misschien beter is om nog steeds de HTML-uitvoer te specificeren (index.html.php of index.html.aspx), omdat dit niet als vanzelfsprekend moet worden beschouwd. Een voorbeeld is de populaire open source webserver Apache, waar de lijst met bestandsnamen wordt beheerd door de DirectoryIndex-richtlijn in het configuratiebestand van de hoofdserver of in het configuratiebestand voor die map. Het is mogelijk om helemaal geen bestandsextensies te gebruiken en neutraal te zijn ten aanzien van methoden voor het leveren van inhoud, en de server zo in te stellen dat deze automatisch het beste bestand kiest via onderhandeling over inhoud. Als de server geen bestand kan vinden met een van de namen die in de configuratie worden vermeld, kan hij ofwel een fout retourneren (meestal 403 Index Listing Forbidden of 404 Not Found) of zijn eigen indexpagina genereren met de bestanden in de directory. Meestal is deze optie, vaak autoindex genoemd, ook configureerbaar.

Geschiedenis

Een schema waarbij de webserver een standaardbestand per subdirectory aanbiedt, werd al ondersteund in NCSA HTTPd 0.3beta (22 april 1993), dat standaard het index.html-bestand in de directory aanbiedt. Dit schema is vervolgens geadopteerd door CERN HTTPd sinds ten minste 2.17beta (5 april 1994), waarvan de standaard Welcome.html en welcome.html ondersteunt naast de NCSA-originated index.html. Latere webservers ondersteunen dit standaard bestandsschema doorgaans in een of andere vorm; dit is meestal configureerbaar, waarbij index.html een van de standaard bestandsnamen is.

Implementatie

In sommige gevallen kan de startpagina van een website een menu met taalopties zijn voor grote sites die geotargeting gebruiken. Het is ook mogelijk om deze stap te vermijden door bijvoorbeeld content-onderhandeling te gebruiken. In gevallen waarin er geen bekend index.*-bestand bestaat in een bepaalde map, kan de webserver worden geconfigureerd om in plaats daarvan een automatisch gegenereerde lijst van de bestanden in de map te bieden. Bij de Apache-webserver wordt dit gedrag bijvoorbeeld geleverd door de module mod_autoindex en gecontroleerd door de instructie Options +Indexes in de configuratiebestanden van de webserver. Deze geautomatiseerde directory-lijsten vormen soms een veiligheidsrisico omdat ze gevoelige bestanden opsommen die mogelijk niet bedoeld zijn voor openbare toegang, in een proces dat bekend staat als een directory-indexeringsaanval. Een dergelijke verkeerde configuratie van de beveiliging kan ook helpen bij andere aanvallen, zoals een pad- of directorytraversal-aanval.

Uitvoeringen

Bij toegang tot een directory kunnen de verschillende beschikbare indexmethoden ook een verschillende impact hebben op het gebruik van OS-bronnen (RAM, CPU-tijd, enz.) en dus op de prestaties van de webserver. Uitgaande van de snelste naar de langzaamste methode, hier is de lijst: een statisch indexbestand gebruiken, bijv.: index.html, enz.; een webserverfunctie gebruiken die gewoonlijk autoindex wordt genoemd (wanneer er geen indexbestand bestaat) om de webserver de directorylijst automatisch te laten genereren met behulp van de interne module; een geïnterpreteerd bestand gebruiken dat wordt gelezen door een interne programma-interpreter van de webserver, bijvoorbeeld: index.php; met behulp van een CGI uitvoerbaar en gecompileerd programma, bijvoorbeeld: index.cgi.

Referenties