Web-palvelimen hakemistohakemisto

Article

July 4, 2022

Kun HTTP-asiakas (yleensä verkkoselain) pyytää URL-osoitetta, joka osoittaa hakemistorakenteeseen hakemistorakenteen varsinaisen verkkosivun sijaan, verkkopalvelin palvelee yleensä oletussivua, jota kutsutaan usein pää- tai " hakemisto" -sivulla. Tällaisten sivujen yleinen tiedostonimi on index.html, mutta useimmat nykyaikaiset HTTP-palvelimet tarjoavat konfiguroitavan luettelon tiedostonimistä, joita palvelin voi käyttää hakemistona. Jos palvelin on määritetty tukemaan palvelinpuolen komentosarjaa, luettelo sisältää yleensä merkintöjä, jotka sallivat dynaamisen sisällön käytön hakemistosivuna (esim. index.cgi, index.pl, index.php, index.shtml, index.jsp, default.asp), vaikka saattaakin olla tarkoituksenmukaisempaa määrittää HTML-ulostulo (index.html.php tai index.html.aspx), koska sitä ei pidä pitää itsestäänselvyytenä. Esimerkki on suosittu avoimen lähdekoodin Web-palvelin Apache, jossa tiedostonimien luetteloa hallitsee DirectoryIndex-direktiivi pääpalvelimen kokoonpanotiedostossa tai kyseisen hakemiston asetustiedostossa. On mahdollista olla käyttämättä tiedostopäätteitä ollenkaan, olla neutraali sisällön toimitusmenetelmien suhteen ja asettaa palvelin valitsemaan automaattisesti paras tiedosto sisältöneuvottelujen kautta. Jos palvelin ei löydä tiedostoa jollakin sen määrityksissä luetelluista nimistä, se voi joko palauttaa virheilmoituksen (yleensä 403 Index Listing Forbidden tai 404 Not Found) tai luoda oman hakemistosivun, jossa luetellaan hakemiston tiedostot. Yleensä tämä vaihtoehto, jota usein kutsutaan nimellä autoindex, on myös konfiguroitavissa.

Historia

Järjestelmää, jossa web-palvelin palvelee oletustiedostoa alihakemistokohtaisesti, on tuettu jo NCSA HTTPd 0.3beta -versiossa (22. huhtikuuta 1993), joka oletuksena palvelee index.html-tiedostoa hakemistossa. CERN HTTPd on ottanut tämän mallin käyttöön ainakin versiosta 2.17beta (5. huhtikuuta 1994) lähtien, jonka oletusarvoinen tuki on Welcome.html ja welcome.html NCSA-alkuperäisen index.html:n lisäksi. Myöhemmät verkkopalvelimet tukevat yleensä tätä oletustiedostomallia muodossa tai toisessa; tämä on yleensä konfiguroitavissa, ja index.html on yksi oletustiedostojen nimistä.

Toteutus

Joissakin tapauksissa verkkosivuston kotisivu voi olla kielivaihtoehtojen valikko suurille sivustoille, jotka käyttävät maantieteellistä kohdistamista. Tämä vaihe on myös mahdollista välttää esimerkiksi käyttämällä sisältöneuvottelua. Tapauksissa, joissa tietyssä hakemistossa ei ole tunnettua index.*-tiedostoa, verkkopalvelin voidaan määrittää tarjoamaan sen sijaan automaattisesti luotu luettelo hakemiston tiedostoista. Esimerkiksi Apache-verkkopalvelimessa tämän käyttäytymisen tarjoaa mod_autoindex-moduuli ja sitä ohjaa verkkopalvelimen asetustiedostojen Options +Indexes -direktiivi. Nämä automaattiset hakemistolistaukset ovat joskus turvallisuusriski, koska niissä luetellaan arkaluontoisia tiedostoja, joita ei ehkä ole tarkoitettu julkiseen käyttöön prosessissa, joka tunnetaan nimellä hakemiston indeksointihyökkäys. Tällainen tietoturvavirhe voi auttaa myös muissa hyökkäyksissä, kuten polun tai hakemiston läpikulkuhyökkäyksessä.

Esitykset

Hakemistoa käytettäessä eri käytettävissä olevat indeksimenetelmät voivat myös vaikuttaa eri tavalla käyttöjärjestelmän resurssien käyttöön (RAM, CPU-aika jne.) ja siten verkkopalvelimen suorituskykyyn. Nopeimmasta hitaimpaan, tässä on luettelo: käyttämällä staattista hakemistotiedostoa, esim.: index.html jne.; käyttämällä verkkopalvelinominaisuutta, jonka nimi on yleensä autoindex (kun hakemistotiedostoa ei ole olemassa), jotta verkkopalvelin voi luoda automaattisesti hakemistoluettelon käyttämällä sisäistä moduuliaan; käyttämällä Web-palvelimen sisäisen ohjelmatulkin lukemaa tulkittua tiedostoa, esim.: index.php; käyttämällä CGI-suoritettavaa ja käännettyä ohjelmaa, esim.: index.cgi.

Viitteet