Index du répertoire du serveur Web

Article

July 5, 2022

Lorsqu'un client HTTP (généralement un navigateur Web) demande une URL qui pointe vers une structure de répertoires au lieu d'une page Web réelle dans la structure de répertoires, le serveur Web servira généralement une page par défaut, souvent appelée page principale ou " sommaire. Un nom de fichier courant pour une telle page est index.html, mais la plupart des serveurs HTTP modernes offrent une liste configurable de noms de fichiers que le serveur peut utiliser comme index. Si un serveur est configuré pour prendre en charge les scripts côté serveur, la liste comprendra généralement des entrées permettant d'utiliser du contenu dynamique comme page d'index (par exemple, index.cgi, index.pl, index.php, index.shtml, index.jsp, default.asp) même s'il peut être plus approprié de toujours spécifier la sortie HTML (index.html.php ou index.html.aspx), car cela ne doit pas être pris pour acquis. Un exemple est le serveur Web open source populaire Apache, où la liste des noms de fichiers est contrôlée par la directive DirectoryIndex dans le fichier de configuration du serveur principal ou dans le fichier de configuration de ce répertoire. Il est possible de ne pas du tout utiliser d'extensions de fichiers, d'être neutre vis-à-vis des méthodes de diffusion de contenu et de configurer le serveur pour qu'il sélectionne automatiquement le meilleur fichier via la négociation de contenu. Si le serveur est incapable de trouver un fichier avec l'un des noms répertoriés dans sa configuration, il peut soit renvoyer une erreur (généralement 403 Index Listing Forbidden ou 404 Not Found) ou générer sa propre page d'index listant les fichiers dans le répertoire. Habituellement, cette option, souvent nommée autoindex, est également configurable.

Historique

Un schéma dans lequel le serveur Web sert un fichier par défaut par sous-répertoire a été pris en charge dès NCSA HTTPd 0.3beta (22 avril 1993), qui sert par défaut le fichier index.html dans le répertoire. Ce schéma a ensuite été adopté par le CERN HTTPd depuis au moins 2.17beta (5 avril 1994), dont la valeur par défaut prend en charge Welcome.html et welcome.html en plus de l'index.html d'origine NCSA. Les serveurs Web ultérieurs prennent généralement en charge ce schéma de fichiers par défaut. sous une forme ou une autre ; ceci est généralement configurable, index.html étant l'un des noms de fichiers par défaut.

Implémentation

Dans certains cas, la page d'accueil d'un site Web peut être un menu d'options linguistiques pour les grands sites qui utilisent le ciblage géographique. Il est également possible d'éviter cette étape, par exemple en utilisant la négociation de contenu. Dans les cas où aucun fichier index.* connu n'existe dans un répertoire donné, le serveur Web peut être configuré pour fournir à la place une liste générée automatiquement des fichiers dans le répertoire. Avec le serveur web Apache, par exemple, ce comportement est assuré par le module mod_autoindex et contrôlé par la directive Options +Indexes dans les fichiers de configuration du serveur web. Ces listes de répertoires automatisées présentent parfois un risque pour la sécurité car elles énumèrent des fichiers sensibles qui peuvent ne pas être destinés à un accès public, dans un processus connu sous le nom d'attaque par indexation de répertoire. Une telle mauvaise configuration de la sécurité peut également contribuer à d'autres attaques, telles qu'une attaque par chemin ou par traversée de répertoire.

Performances

Lors de l'accès à un répertoire, les différentes méthodes d'indexation disponibles peuvent également avoir un impact différent sur l'utilisation des ressources de l'OS (RAM, temps CPU, etc.) et donc sur les performances du serveur web. En procédant de la méthode la plus rapide à la plus lente, voici la liste : à l'aide d'un fichier d'index statique, par exemple : index.html, etc. ; utiliser une fonction de serveur Web généralement appelée autoindex (lorsqu'aucun fichier d'index n'existe) pour permettre au serveur Web de générer automatiquement une liste de répertoires à l'aide de son module interne ; en utilisant un fichier interprété lu par l'interpréteur de programme interne du serveur Web, par exemple : index.php ; à l'aide d'un exécutable CGI et d'un programme compilé, par exemple : index.cgi.

Références