Evitar listado de directorios con Apache

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 *