Ευρετήριο καταλόγου εξυπηρετητή ιστού
Όταν ένα πρόγραμμα-πελάτης HTTP (γενικά ένας περιηγητής ιστού) ζητά μια διεύθυνση URL που οδηγεί σε μια δομή καταλόγου αντί για μια πραγματική ιστοσελίδα εντός της δομής καταλόγου, ο εξυπηρετητής ιστού παρέχει γενικά μια προεπιλεγμένη σελίδα, η οποία αποτελεί το ευρετήριο καταλόγου του εξυπηρετητή και συχνά ονομάζεται κύρια σελίδα ή "σελίδα ευρετηρίου".
Ένα σύνηθες όνομα αρχείου για μια τέτοια σελίδα είναι το index.html
, αλλά οι περισσότεροι σύγχρονοι εξυπηρετητές HTTP προσφέρουν μια διαμορφώσιμη λίστα ονομάτων αρχείων που μπορούν να χρησιμοποιήσουν ως ευρετήριο. Εάν ένας εξυπηρετητής έχει ρυθμιστεί να υποστηρίζει σενάρια από την πλευρά του εξυπηρετητή, η λίστα περιλαμβάνει συχνά καταχωρήσεις που επιτρέπουν τη χρήση δυναμικού περιεχομένου ως σελίδα ευρετηρίου (π.χ. index.cgi
, index.pl
, index.php
, index.shtml
, index.jsp
, default.asp
), αν και ίσως είναι καλύτερο να προσδιορίζεται η έξοδος HTML (index.html.php
ή index.html.aspx
), καθώς αυτό δεν πρέπει να θεωρείται δεδομένο. Ένα παράδειγμα είναι ο δημοφιλής εξυπηρετητής ιστού ανοιχτού κώδικα Apache, όπου η λίστα των ονομάτων αρχείων ελέγχεται από την οδηγία DirectoryIndex
[1] στο κύριο αρχείο διαμόρφωσης του διακομιστή ή στο αρχείο διαμόρφωσης του καταλόγου. Είναι δυνατόν να μην χρησιμοποιούνται καθόλου επεκτάσεις αρχείων, να υπάρχει ουδετερότητα ως προς τις μεθόδους παράδοσης περιεχομένου και να ρυθμιστεί ένας εξυπηρετητής ώστε να επιλέγει αυτόματα το καλύτερο αρχείο μέσω της διαπραγμάτευσης περιεχομένου.
Εάν ο εξυπηρετητής δεν μπορεί να βρει ένα αρχείο με οποιοδήποτε από τα ονόματα αρχείων στο αρχείο διαμόρφωσής του, μπορεί είτε να επιστρέψει ένα σφάλμα (συνήθως 403 Index Listing Forbidden ή 404 Not Found), είτε να δημιουργήσει τη δική του σελίδα ευρετηρίου με τα αρχεία που βρίσκονται στον κατάλογο. Συνήθως, αυτή η επιλογή, που συχνά ονομάζεται autoindex
, είναι επίσης διαμορφώσιμη.[2]
Ιστορία
[Επεξεργασία | επεξεργασία κώδικα]Ένα σχήμα όπου ο εξυπηρετητής ιστού παρέχει ένα προεπιλεγμένο αρχείο ανά υποκατάλογο έχει υποστηριχθεί ήδη από το NCSA HTTPd 0.3beta (22 Απριλίου 1993),[3] το οποίο, ως προεπιλογή, παρέχει το αρχείο index.html
του καταλόγου.[3][4] Αυτό το σχήμα, στη συνέχεια, υιοθετήθηκε από το CERN HTTPd τουλάχιστον από την έκδοση 2.17beta (5 Απριλίου 1994), του οποίου οι προεπιλεγμένες ρυθμίσεις υποστηρίζουν τα Welcome.html
και welcome.html
εκτός από το index.html
που προήλθε από το NCSA.[5]
Οι μεταγενέστεροι εξυπηρετητές ιστού συνήθως υποστηρίζουν αυτό το προεπιλεγμένο σχήμα αρχείων σε κάποια μορφή. Αυτό είναι συνήθως διαμορφώσιμο, με το index.html
να είναι ένα από τα προεπιλεγμένα ονόματα αρχείων.[6][7][8]
Υλοποίηση
[Επεξεργασία | επεξεργασία κώδικα]Σε ορισμένες περιπτώσεις, η αρχική σελίδα ενός ιστότοπου μπορεί να είναι ένα μενού επιλογής γλώσσας για μεγάλους ιστότοπους που χρησιμοποιούν γεωγραφική στόχευση. Αυτό το βήμα είναι δυνατό να αποφευχθεί, χρησιμοποιώντας, για παράδειγμα, τη διαπραγμάτευση περιεχομένου.
Σε περιπτώσεις όπου δεν υπάρχει γνωστό αρχείο index.*
σε έναν δεδομένο κατάλογο, ο εξυπηρετητής ιστού μπορεί να ρυθμιστεί ώστε να παρέχει μια αυτόματα δημιουργημένη λίστα των αρχείων εντός του καταλόγου. Στον εξυπηρετητή ιστού Apache, για παράδειγμα, αυτή η συμπεριφορά παρέχεται από τη μονάδα mod_autoindex[9] και ελέγχεται από την οδηγία Options +Indexes
[10] στα αρχεία διαμόρφωσής του. Αυτές οι αυτοματοποιημένες λίστες καταλόγου αποτελούν μερικές φορές κίνδυνο για την ασφάλεια, επειδή απαριθμούν ευαίσθητα αρχεία, τα οποία ενδέχεται να μην προορίζονται για δημόσια πρόσβαση, σε μια διαδικασία γνωστή ως επίθεση ευρετηρίασης καταλόγου.[11] Μια τέτοια εσφαλμένη διαμόρφωση ασφαλείας[12] μπορεί επίσης να βοηθήσει σε άλλες επιθέσεις, όπως μια επίθεση διέλευσης καταλόγου.[13]
Επιδόσεις
[Επεξεργασία | επεξεργασία κώδικα]Κατά την πρόσβαση σε έναν κατάλογο, οι διάφορες διαθέσιμες μέθοδοι ευρετηρίου ενδέχεται να έχουν διαφορετικό αντίκτυπο στη χρήση των πόρων του λειτουργικού συστήματος (RAM, χρόνος CPU, κ.λπ.) και, συνεπώς, στις επιδόσεις του εξυπηρετητή ιστού.
Ταξινομώντας από την ταχύτερη στην πιο αργή μέθοδο, ένας εξυπηρετητής ιστού μπορεί:
- να χρησιμοποιήσει ένα στατικό αρχείο ευρετηρίου, π.χ.:
index.html
, - να χρησιμοποιήσει μια δυνατότητα που συνήθως ονομάζεται autoindex (όταν δεν υπάρχει αρχείο ευρετηρίου) για να δημιουργήσει αυτόματα μια λίστα καταλόγου χρησιμοποιώντας την εσωτερική του μονάδα,
- να χρησιμοποιήσει ένα ερμηνεύσιμο αρχείο που διαβάζεται από τον εσωτερικό διερμηνέα προγράμματός του, π.χ.:
index.php,
- να χρησιμοποιήσει ένα εκτελέσιμο και μεταγλωττισμένο πρόγραμμα CGI, π.χ.:
index.cgi
.
Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ «mod_dir - Apache HTTP Server». httpd.apache.org. Ανακτήθηκε στις 30 Μαΐου 2014.
- ↑ ASF Infrabot (22 Μαΐου 2019). «Directory listings» (στα Αγγλικά). Apache foundation: HTTPd server project. Ανακτήθηκε στις 16 Νοεμβρίου 2021.
- ↑ 3,0 3,1 «WWW-Talk Apr-Jun 1993: NCSA httpd version 0.3». 1997.webhistory.org.
- ↑ «NCSA HTTPd DirectoryIndex». 31 Ιανουαρίου 2009. Αρχειοθετήθηκε από το πρωτότυπο στις 31 Ιανουαρίου 2009.
- ↑ «Change History of W3C httpd». 5 Ιουνίου 1997. Αρχειοθετήθηκε από το πρωτότυπο στις 5 Ιουνίου 1997.
- ↑ «mod_dir - Apache HTTP Server Version 2.4 § DirectoryIndex Directive». httpd.apache.org. Αρχειοθετήθηκε από το πρωτότυπο στις 12 Νοεμβρίου 2020. Ανακτήθηκε στις 13 Ιανουαρίου 2021.
- ↑ «NGINX Docs | Serving Static Content». docs.nginx.com. Αρχειοθετήθηκε από το πρωτότυπο στις 11 Νοεμβρίου 2020. Ανακτήθηκε στις 13 Ιανουαρίου 2021.
- ↑ «Default Document <defaultDocument> | Microsoft Docs». docs.microsoft.com. Αρχειοθετήθηκε από το πρωτότυπο στις 8 Δεκεμβρίου 2020. Ανακτήθηκε στις 13 Ιανουαρίου 2021.
- ↑ «mod_autoindex - Apache HTTP Server Version 2.4». httpd.apache.org. Ανακτήθηκε στις 13 Ιανουαρίου 2021.
- ↑ «core - Apache HTTP Server Version 2.4 § Options Directive». httpd.apache.org. Ανακτήθηκε στις 13 Ιανουαρίου 2021.
- ↑ «IBM Docs». IBM. 8 Μαρτίου 2021. Ανακτήθηκε στις 7 Μαΐου 2021.
- ↑ «A6:2017-Security Misconfiguration». OWASP. Ανακτήθηκε στις 7 Μαΐου 2021.
- ↑ «Path Traversal». OWASP. Ανακτήθηκε στις 7 Μαΐου 2021.