Evitar listado de directorios con Apache
Introducción
Una de las acciones básicas de cara a mejorar la seguridad de un sitio web, es evitar que el servidor devuelva los listados del contenido de los directorios que son públicos. Una solución popular es incluir un fichero index.html vacío en todos los directorios que no deben ser listados o que no tienen un fichero que realice alguna función. Si estamos hablando de un sitio web con cientos o miles de directorios, esta opción queda descartada directamente.
.haccess
La alternativa es simple si estamos usando un servidor web Apache, utilizar las bondades del fichero .htaccess. La opción más directa es deshabilitar todos los listados de directorios en nuestro sitio.
Desactivar listados
En el raíz de nuestro sitio, creamos un fichero .htaccess (o añadimos al que ya tenemos) la siguiente línea:
Options -Indexes
De esta forma evitamos los listados en cualquier directorio de nuestro sitio. La opción contraria, para un directorio en particular o porque queramos habilitar esta característica en un sitio donde el proveedor la tiene deshabilitada por defecto es la siguiente:
Options +Indexes
Estilo de los listados
Si lo que queremos es tener el listado, tenemos dos opciones, mostrar la lista básica de ficheros:
IndexOptions -FancyIndexing
O mostrar más información: fechas de modificación, tamaño de ficheros, iconos…:
IndexOptions +FancyIndexing
Ignorar ciertos tipos de ficheros
Otra opción a tener en cuenta es la de ignorar ciertos tipos de ficheros, de forma que podamos listar por ejemplos el contenido multimedia, obviando los ficheros PHP o HTML. Para este ejemplo usaríamos la siguiente instrucción:
IndexIgnore *.php *.html
Finalmente, podemos mostrar un listado en blanco, es decir, ignorar todos los ficheros. Es otra alternativa a impedir los listados.
IndexIgnore *