Indice di directory del server Web

Article

July 5, 2022

Quando un client HTTP (generalmente un browser Web) richiede un URL che punta a una struttura di directory anziché a una pagina Web effettiva all'interno della struttura di directory, il server Web generalmente servirà una pagina predefinita, che viene spesso definita principale o " pagina dell'indice". Un nome file comune per tale pagina è index.html, ma la maggior parte dei moderni server HTTP offre un elenco configurabile di nomi file che il server può utilizzare come indice. Se un server è configurato per supportare lo scripting lato server, l'elenco di solito include voci che consentono di utilizzare il contenuto dinamico come pagina di indice (ad es. index.cgi, index.pl, index.php, index.shtml, index.jsp, default.asp) anche se potrebbe essere più appropriato specificare comunque l'output HTML (index.html.php o index.html.aspx), poiché questo non dovrebbe essere dato per scontato. Un esempio è il popolare server Web open source Apache, in cui l'elenco dei nomi di file è controllato dalla direttiva DirectoryIndex nel file di configurazione del server principale o nel file di configurazione per quella directory. È possibile non utilizzare affatto le estensioni di file, essere neutrali rispetto ai metodi di consegna del contenuto e impostare il server in modo che scelga automaticamente il file migliore tramite la negoziazione del contenuto. Se il server non riesce a trovare un file con nessuno dei nomi elencati nella sua configurazione, può restituire un errore (di solito 403 Elenco di indici proibito o 404 Non trovato) o generare la propria pagina di indice che elenca i file nella directory. Di solito anche questa opzione, spesso denominata autoindex, è configurabile.

Storia

Uno schema in cui il server Web serve un file predefinito in base alla sottodirectory è stato supportato già da NCSA HTTPd 0.3beta (22 aprile 1993), che per impostazione predefinita serve il file index.html nella directory. Questo schema è stato poi adottato dal CERN HTTPd almeno dalla versione 2.17beta (5 aprile 1994), il cui valore predefinito supporta Welcome.html e welcome.html oltre a index.html originato dall'NCSA. I server Web successivi in ​​genere supportano questo schema di file predefinito in una forma o nell'altra; questo è solitamente configurabile, con index.html come uno dei nomi di file predefiniti.

Implementazione

In alcuni casi, la home page di un sito Web può essere un menu di opzioni di lingua per siti di grandi dimensioni che utilizzano il targeting geografico. È anche possibile evitare questo passaggio, ad esempio, utilizzando la negoziazione del contenuto. Nei casi in cui non esiste alcun file index.* noto all'interno di una determinata directory, il server Web può essere configurato per fornire invece un elenco generato automaticamente dei file all'interno della directory. Con il web server Apache, ad esempio, questo comportamento è fornito dal modulo mod_autoindex e controllato dalla direttiva Options +Indexes nei file di configurazione del web server. Questi elenchi di directory automatizzati a volte rappresentano un rischio per la sicurezza perché enumerano file sensibili che potrebbero non essere destinati all'accesso pubblico, in un processo noto come attacco di indicizzazione delle directory. Una tale configurazione errata della sicurezza può anche aiutare in altri attacchi, come un attacco di attraversamento di percorsi o directory.

Spettacoli

Quando si accede a una directory, i vari metodi di indicizzazione disponibili possono anche avere un impatto diverso sull'utilizzo delle risorse del sistema operativo (RAM, tempo CPU, ecc.) e quindi sulle prestazioni del server web. Procedendo dal metodo più veloce a quello più lento, ecco l'elenco: utilizzando un file di indice statico, ad es.: index.html, ecc.; utilizzando una funzionalità del server Web solitamente denominata autoindex (quando non esiste alcun file di indice) per consentire al server Web di generare automaticamente l'elenco delle directory utilizzando il suo modulo interno; utilizzando un file interpretato letto dall'interprete del programma interno del server web, ad es.: index.php; utilizzando un eseguibile CGI e un programma compilato, ad esempio: index.cgi.

Riferimenti