Quando visitiamo un sito web, normalmente vediamo una pagina HTML, un'applicazione oppure un messaggio di errore.
Ma cosa succede quando richiediamo una directory che non contiene una pagina iniziale?
A seconda della configurazione del server, potremmo visualizzare un elenco dei file e delle sottocartelle presenti al suo interno.
Questo comportamento viene chiamato directory listing o directory indexing.
In alcuni contesti è una funzionalità voluta, per esempio quando si pubblicano archivi di file destinati al download.
In altri casi, però, può rivelare informazioni che non dovrebbero essere facilmente accessibili.
Vediamo quando il directory listing rappresenta un problema, come verificarlo e quali accorgimenti utilizzare per proteggere le directory di un sito web.
Che cos'è il directory listing?
Il directory listing è una funzionalità del server web che permette di mostrare il contenuto di una directory attraverso una pagina generata automaticamente.
Immaginiamo che un sito contenga questa struttura:
/public_html/
├── index.php
├── assets/
│ ├── style.css
│ └── app.js
└── documents/
├── report.pdf
├── archivio.zip
└── note.txt
Se il server consente l'indicizzazione della directory documents, visitando:
https://example.com/documents/
potremmo ottenere una pagina contenente l'elenco dei file.
Il comportamento dipende dalla configurazione del web server e dalla presenza di eventuali file indice.
Perché il directory listing può essere pericoloso?
Il problema principale riguarda la divulgazione involontaria di informazioni.
Un elenco pubblico può mostrare nomi di file, directory e talvolta metadati come dimensioni e date di modifica.
Questi dettagli possono aiutare qualcuno a comprendere la struttura dell'applicazione.
In alcuni casi, l'elenco può facilitare l'individuazione di file che non erano destinati alla pubblicazione.
Per esempio:
- Archivi di backup.
- Vecchie versioni di documenti.
- File di configurazione.
- Report interni.
- Esportazioni di database.
- Documenti caricati per errore.
- File temporanei.
Naturalmente, non tutti questi file sono necessariamente sensibili.
La gravità dipende dal loro contenuto e dai permessi effettivi di accesso.
Directory listing e accesso diretto ai file: due problemi differenti
È importante distinguere due situazioni.
Directory listing attivo: il server mostra automaticamente l'elenco dei file presenti in una cartella.
File accessibile pubblicamente: un file può essere scaricato conoscendone l'URL, anche quando il directory listing è disabilitato.
Questa differenza è fondamentale.
Disabilitare l'elenco delle directory non impedisce necessariamente di accedere ai singoli file.
Se un archivio di backup si trova nella directory pubblica ed è servito dal web server, potrebbe rimanere scaricabile anche senza una pagina che ne mostri il nome.
Per questo motivo, il directory listing non deve essere considerato l'unico controllo di sicurezza necessario.
Come verificare se il directory listing è attivo
Il controllo più semplice consiste nel visitare direttamente le directory del proprio sito.
Per esempio:
https://example.com/uploads/
https://example.com/assets/
https://example.com/backups/
Questi indirizzi sono soltanto esempi: bisogna utilizzare percorsi realmente presenti nella propria applicazione.
Se il server restituisce una pagina con l'elenco dei file, l'indicizzazione potrebbe essere attiva.
Se invece mostra un errore 403, una pagina 404 oppure un contenuto applicativo, il listing potrebbe essere disabilitato o gestito diversamente.
È possibile controllare anche gli header HTTP:
curl -I https://example.com/uploads/
Il codice di risposta può fornire indicazioni, ma non basta da solo per stabilire se una directory sia protetta.
Come disabilitare il directory listing su Apache
Apache permette di controllare il comportamento attraverso la direttiva Options.
Quando il server consente l'utilizzo di .htaccess e la relativa direttiva, è possibile inserire:
Options -Indexes
Questa impostazione disabilita la generazione automatica degli elenchi delle directory.
Il file può essere collocato nella directory appropriata, tenendo conto delle regole di ereditarietà.
La configurazione effettiva dipende dalle impostazioni del server e dai permessi concessi.
Directory listing su OpenLiteSpeed
OpenLiteSpeed utilizza una configurazione propria per la gestione delle directory e dei contesti web.
In ambienti che utilizzano OpenLiteSpeed, è importante verificare le impostazioni relative all'auto indexing e al comportamento delle directory.
Le direttive compatibili con .htaccess non devono essere considerate automaticamente equivalenti a tutte le opzioni disponibili in Apache.
La procedura corretta dipende dalla versione del server, dal virtual host e dal pannello di gestione utilizzato.
Dopo una modifica, conviene verificare il comportamento effettivo attraverso una richiesta HTTP.
📌 Se utilizzi un pannello di hosting, controlla anche che le configurazioni non vengano sovrascritte da aggiornamenti o modifiche ai virtual host.
Directory listing su Nginx
In Nginx, l'indicizzazione delle directory viene controllata attraverso la direttiva autoindex.
Per esempio:
location /documents/ {
autoindex off;
}
Il valore off disabilita la generazione dell'elenco automatico.
La configurazione deve essere inserita nel contesto appropriato e verificata prima del reload del servizio.
Per controllare la sintassi:
nginx -t
Dopo aver applicato la configurazione, è opportuno effettuare un nuovo test dal browser.
Perché un file index.html vuoto non è una soluzione completa
In passato era abbastanza comune inserire un file index.html vuoto nelle directory per impedire la visualizzazione dell'elenco.
Questo comportamento può effettivamente nascondere il listing in alcune configurazioni.
Tuttavia, non rappresenta una misura di sicurezza sufficiente.
I file presenti nella directory potrebbero rimanere accessibili attraverso URL diretti.
È preferibile configurare correttamente il server e impedire la pubblicazione dei file che non devono essere raggiungibili dall'esterno.
Dove conservare i backup del sito?
Un errore frequente consiste nel salvare gli archivi di backup direttamente all'interno della directory pubblica.
Per esempio:
/public_html/backups/database.sql.gz
Se il file è servito dal web server, potrebbe essere scaricabile conoscendone l'indirizzo.
La soluzione preferibile consiste nel conservare i backup fuori dalla document root.
Per esempio:
/home/account/
├── backups/
│ └── database.sql.gz
└── public_html/
└── index.php
La directory dei backup deve avere permessi appropriati e non essere pubblicata attraverso altri alias o configurazioni del server.
È importante anche proteggere gli archivi attraverso controlli di accesso e, quando opportuno, cifratura.
Il caso delle directory uploads
Le directory utilizzate per caricare file meritano particolare attenzione.
Un sito può consentire agli utenti di caricare immagini, documenti o altri allegati.
In questi casi bisogna verificare non soltanto il directory listing, ma anche:
- Quali tipi di file sono accettati.
- Se i file caricati possono essere eseguiti come codice.
- Se i documenti privati sono accessibili senza autenticazione.
- Come vengono generati i nomi dei file.
- Se i permessi sono corretti.
- Se sono presenti controlli sulla dimensione e sul contenuto.
Un'applicazione che gestisce documenti riservati non dovrebbe affidarsi soltanto a URL difficili da indovinare.
È necessario applicare controlli di autorizzazione anche durante il download.
Directory listing e motori di ricerca
Quando una directory è pubblicamente accessibile, il suo contenuto potrebbe essere scoperto e indicizzato dai motori di ricerca.
Questo può rendere più semplice individuare file pubblicati accidentalmente.
Tuttavia, il file robots.txt non è uno strumento di protezione degli accessi.
Inserire una directory tra i percorsi esclusi dalla scansione non impedisce a un visitatore di raggiungerla.
Inoltre, dichiarare percorsi sensibili nel robots.txt può attirare l'attenzione sulla loro esistenza.
Per proteggere informazioni riservate bisogna utilizzare autenticazione, autorizzazione e configurazioni del server appropriate.
Come verificare i file pubblicamente accessibili
Una revisione utile dovrebbe includere:
- L'identificazione delle directory pubblicate dal server.
- La verifica delle impostazioni di directory indexing.
- Il controllo dei file di backup e delle esportazioni.
- La ricerca di configurazioni accidentalmente pubblicate.
- La verifica dei permessi sui documenti riservati.
- Il controllo delle directory utilizzate per gli upload.
È opportuno ripetere questi controlli dopo migrazioni, modifiche al virtual host e aggiornamenti importanti dell'infrastruttura.
Quando il directory listing è legittimo?
Non sempre il directory listing rappresenta una vulnerabilità.
Un'organizzazione potrebbe utilizzarlo intenzionalmente per distribuire pacchetti, documentazione o file pubblici.
In questo caso, però, è importante che la directory contenga soltanto materiale destinato alla pubblicazione.
L'accesso deve essere coerente con le esigenze del servizio e la configurazione deve essere una scelta consapevole.
Il problema nasce soprattutto quando l'indicizzazione viene lasciata attiva accidentalmente.
Conclusione
Il directory listing è una funzionalità semplice, ma può contribuire alla divulgazione involontaria di informazioni.
Disabilitarlo quando non serve è una buona pratica.
Tuttavia, la misura più importante rimane evitare che file sensibili siano pubblicati all'interno delle directory accessibili dal web.
Backup, configurazioni e documenti riservati dovrebbero essere conservati e protetti attraverso controlli appropriati.
Con MiHakero puoi controllare le esposizioni esterne dei tuoi servizi e individuare configurazioni che meritano una verifica. Una revisione dei file pubblicati e dei permessi del server completa questo lavoro, contribuendo a ridurre il rischio di divulgazioni accidentali.
SEO Meta Title: Directory listing: rischi e come disabilitarlo
SEO Meta Description: Scopri cos'è il directory listing, perché può esporre file sensibili e come proteggere le directory su Apache, Nginx e OpenLiteSpeed.