Web servera direktoriju indekss

Vikipēdijas lapa
www.wikipedia.org, daudzvalodu tiešsaistes enciklopēdijas Wikipedia rādītājs. Šeit vietnes sākumlapa piedāvā dažādas valodas.

Kad HTTP klients (parasti tīmekļa pārlūkprogramma) pieprasa URL, kas norāda uz direktoriju struktūru, nevis uz faktisko tīmekļa lapu direktoriju struktūrā, tīmekļa serveris parasti piegādās noklusējuma lapu, ko bieži dēvē par galveno vai "index" (rādītāja) lapu.

Parasti šādas lapas faila nosaukums ir index.html, taču lielākā daļa mūsdienu HTTP serveru piedāvā konfigurējamu failu nosaukumu sarakstu, ko serveris var izmantot kā indeksu. Ja serveris ir konfigurēts, lai atbalstītu servera puses skriptēšanu, sarakstā parasti ir iekļauti ieraksti, kas ļauj dinamisku saturu izmantot kā rādītāja (index) lapu (piemēram, index.cgi, index.pl, index.php, index.shtml, index.jsp, default.asp ), lai gan piemērotāk būtu norādīt HTML izvadi (index.html.php vai index.html.aspx ), jo to nevajadzētu uzskatīt par pašsaprotamu. Piemērs ir populārais atvērtā pirmkoda tīmekļa serveris Apache, kur failu nosaukumu sarakstu kontrolē DirectoryIndex[1] direktīva galvenā servera konfigurācijas failā vai šīs direktorijas konfigurācijas failā. Ir iespējams vispār neizmantot failu paplašinājumus un būt neitrāliem pret satura piegādes metodēm, kā konfigurēt iestatījumus, lai serveris automātiski izvēlētos labāko failu satura sarunās.

Ja serveris nevar atrast failu ar kādu no tā konfigurācijā norādītajiem nosaukumiem, tas var vai nu atgriezt kļūdu (parasti 403 Index Listing Forbidden vai 404 Not Found), vai arī ģenerē savu rādītāja lapu, kurā uzskaitīti direktorijā esošie faili. Parasti šī opcija, ko bieži sauc par autoindex, ir arī konfigurējama.[2]

Vēsture[labot šo sadaļu | labot pirmkodu]

Shēmu, kurā tīmekļa serveris apkalpo noklusējuma failu, pamatojoties uz katru apakšdirektoriju, atbalstīta jau NCSA HTTPd 0.3beta (1993. gada 22. aprīlis),[3] kas pēc noklusējuma apkalpo index.html failu direktorijā.[3][4] Pēc tam šo shēmu izmantoja CERN HTTPd kopš versijas 2.17beta (1994. gada 5. aprīlis), kuras noklusējuma iestatījumi atbalsta Welcome.html un welcome.html papildus NCSA izcelsmes index.html.[5]

Vēlāk tīmekļa serveri atbalsta šo noklusējuma failu shēmu vienā vai otrā veidā - to parasti var konfigurēt ar index.html, to norādot kā vienu no noklusējuma faila nosaukumiem.[6][7][8]

Piemērošana[labot šo sadaļu | labot pirmkodu]

Lielām tīmekļa vietnēm, kurās tiek izmantota ģeogrāfiskā mērķauditorijas atlase, mājaslapa dažkārt var būt valodas izvēlnes piedāvājums. No šī soļa ir iespējams arī izvairīties, piemēram, izmantojot satura sarunas.

Gadījumos, kad konkrētajā direktorijā nav zināms index.* fails, tīmekļa serveris var tikt konfigurēts tā, lai tā vietā nodrošinātu direktorijā esošo failu automātiski ģenerētu sarakstu. Piemēram, Apache tīmekļa serverī šo darbību nodrošina modulis mod_autoindex,[9] un to kontrolē Options +Indexes direktīva[10] tīmekļa servera konfigurācijas failos. Šie automatizētie direktoriju saraksti dažkārt rada drošības risku, jo tajos ir uzskaitīti sensitīvi faili, kas var nebūt paredzēti publiskai piekļuvei procesā, kas tiek dēvēts par direktoriju indeksēšanas uzbrukumu.[11] Šāda drošības iestatījumu nepareiza konfigurācija[12] var atvieglot arī citus uzbrukumus, piemēram, ceļu vai direktoriju šķērsošanas uzbrukumus.[13]

Izpilde[labot šo sadaļu | labot pirmkodu]

Piekļūstot direktorijam, dažādas indeksa metodes var atšķirīgi ietekmēt operētājsistēmas resursu izmantošanu (RAM, CPU laiku utt.) un tādējādi ietekmējot arī tīmekļa servera veiktspēju.

Saraksts pārejai no ātrākās uz lēnāko metodi:

  • izmantojot statisku indeksa failu, piemēram: index.html utt.;
  • izmantojot tīmekļa servera līdzekli, ko parasti sauc par automātisko indeksu (ja indeksa fails nepastāv), lai ļautu tīmekļa serverim automātiski ģenerēt direktoriju sarakstu, izmantojot tā iekšējo moduli;
  • izmantojot interpretētu failu, ko nolasa tīmekļa servera iekšējais programmu tulks, piemēram: index.php;
  • izmantojot CGI izpildāmu un kompilētu programmu, piemēram: index.cgi.

Atsauces[labot šo sadaļu | labot pirmkodu]

  1. «mod_dir - Apache HTTP Server». httpd.apache.org. Skatīts: 2014-05-30.
  2. ASF Infrabot. «Directory listings» (angļu). Apache foundation: HTTPd server project, 2019-05-22. Skatīts: 2021-11-16.
  3. 3,0 3,1 «WWW-Talk Apr-Jun 1993: NCSA httpd version 0.3». 1997.webhistory.org.
  4. «NCSA HTTPd DirectoryIndex». 2009. gada 31. janvāris. Arhivēts no oriģināla, laiks: 2009. gada 31. janvārī. Skatīts: 2022. gada 14. decembrī.
  5. «Change History of W3C httpd». 1997. gada 5. jūnijs.
  6. «mod_dir - Apache HTTP Server Version 2.4 § DirectoryIndex Directive». httpd.apache.org. Skatīts: 2021-01-13.
  7. «NGINX Docs | Serving Static Content». docs.nginx.com. Skatīts: 2021-01-13.
  8. «Default Document <defaultDocument> | Microsoft Docs». docs.microsoft.com. Skatīts: 2021-01-13.
  9. «mod_autoindex - Apache HTTP Server Version 2.4». httpd.apache.org. Skatīts: 2021-01-13.
  10. «core - Apache HTTP Server Version 2.4 § Options Directive». httpd.apache.org. Skatīts: 2021-01-13.
  11. «IBM Docs». IBM. 2021-03-08. Skatīts: 2021-05-07.
  12. «A6:2017-Security Misconfiguration». OWASP. Skatīts: 2021-05-07.
  13. «Path Traversal». OWASP. Skatīts: 2021-05-07.