Ευρετήριο καταλόγου εξυπηρετητή ιστού

Όταν ένα πρόγραμμα-πελάτης 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 στο κύριο αρχείο διαμόρφωσης του διακομιστή ή στο αρχείο διαμόρφωσης του καταλόγου. Είναι δυνατόν να μην χρησιμοποιούνται καθόλου επεκτάσεις αρχείων, να υπάρχει ουδετερότητα ως προς τις μεθόδους παράδοσης περιεχομένου και να ρυθμιστεί ένας εξυπηρετητής ώστε να επιλέγει αυτόματα το καλύτερο αρχείο μέσω της διαπραγμάτευσης περιεχομένου. Εάν ο εξυπηρετητής δεν μπορεί να βρει ένα αρχείο με οποιοδήποτε από τα ονόματα αρχείων στο αρχείο διαμόρφωσής του, μπορεί είτε να επιστρέψει ένα σφάλμα (συνήθως 403 Index Listing Forbidden ή 404 Not Found), είτε να δημιουργήσει τη δική του σελίδα ευρετηρίου με τα αρχεία που βρίσκονται στον κατάλογο. Συνήθως, αυτή η επιλογή, που συχνά ονομάζεται autoindex, είναι επίσης διαμορφώσιμη.

 Ένα σχήμα όπου ο εξυπηρετητής ιστού παρέχει ένα προεπιλεγμένο αρχείο ανά υποκατάλογο έχει υποστηριχθεί ήδη από το NCSA HTTPd 0.3beta (22 Απριλίου 1993), το οποίο, ως προεπιλογή, παρέχει το αρχείο index.html του καταλόγου. Αυτό το σχήμα, στη συνέχεια, υιοθετήθηκε από το CERN HTTPd τουλάχιστον από την έκδοση 2.17beta (5 Απριλίου 1994), του οποίου οι προεπιλεγμένες ρυθμίσεις υποστηρίζουν τα Welcome.html και welcome.html εκτός από το index.html που προήλθε από το NCSA.Οι μεταγενέστεροι εξυπηρετητές ιστού συνήθως υποστηρίζουν αυτό το προεπιλεγμένο σχήμα αρχείων σε κάποια μορφή. Αυτό είναι συνήθως διαμορφώσιμο, με το index.html να είναι ένα από τα προεπιλεγμένα ονόματα αρχείων. Σε ορισμένες περιπτώσεις, η αρχική σελίδα ενός ιστότοπου μπορεί να είναι ένα μενού επιλογής γλώσσας για μεγάλους ιστότοπους που χρησιμοποιούν γεωγραφική στόχευση. Αυτό το βήμα είναι δυνατό να αποφευχθεί, χρησιμοποιώντας, για παράδειγμα, τη διαπραγμάτευση περιεχομένου. Σε περιπτώσεις όπου δεν υπάρχει γνωστό αρχείο index.* σε έναν δεδομένο κατάλογο, ο εξυπηρετητής ιστού μπορεί να ρυθμιστεί ώστε να παρέχει μια αυτόματα δημιουργημένη λίστα των αρχείων εντός του καταλόγου. Στον εξυπηρετητή ιστού Apache, για παράδειγμα, αυτή η συμπεριφορά παρέχεται από τη μονάδα mod_autoindex και ελέγχεται από την οδηγία Options +Indexes στα αρχεία διαμόρφωσής του. Αυτές οι αυτοματοποιημένες λίστες καταλόγου αποτελούν μερικές φορές κίνδυνο για την ασφάλεια, επειδή απαριθμούν ευαίσθητα αρχεία, τα οποία ενδέχεται να μην προορίζονται για δημόσια πρόσβαση, σε μια διαδικασία γνωστή ως επίθεση ευρετηρίασης καταλόγου. Μια τέτοια εσφαλμένη διαμόρφωση ασφαλείας μπορεί επίσης να βοηθήσει σε άλλες επιθέσεις, όπως μια επίθεση διέλευσης καταλόγου. Κατά την πρόσβαση σε έναν κατάλογο, οι διάφορες διαθέσιμες μέθοδοι ευρετηρίου ενδέχεται να έχουν διαφορετικό αντίκτυπο στη χρήση των πόρων του λειτουργικού συστήματος (RAM, χρόνος CPU, κ.λπ.) και, συνεπώς, στις επιδόσεις του εξυπηρετητή ιστού. Ταξινομώντας από την ταχύτερη στην πιο αργή μέθοδο, ένας εξυπηρετητής ιστού μπορεί: να χρησιμοποιήσει ένα στατικό αρχείο ευρετηρίου, π.χ.: index.html, να χρησιμοποιήσει μια δυνατότητα που συνήθως ονομάζεται autoindex (όταν δεν υπάρχει αρχείο ευρετηρίου) για να δημιουργήσει αυτόματα μια λίστα καταλόγου χρησιμοποιώντας την εσωτερική του μονάδα, να χρησιμοποιήσει ένα ερμηνεύσιμο αρχείο που διαβάζεται από τον εσωτερικό διερμηνέα προγράμματός του, π.χ.: index.php, να χρησιμοποιήσει ένα εκτελέσιμο και μεταγλωττισμένο πρόγραμμα CGI, π.χ.: index.cgi.