Cuando hacemos un proyecto web, lo normal es ser ordenado y tener varias carpetas. Carpeta para las hojas de estilo, carpeta para los archivos JavaSript, para las imagenes…
No se si os habéis parado a pensar alguna vez en esto pero, cuando subimos todas esas carpetas a nuestro host… nada impide que un visitante ponga la ruta de dichas carpetas en la URL y visualice el listado de todos los archivos y directorios que se encuentran dentro. Probadlo con algún proyecto vuestro que tengáis subido.
¿Cómo evitamos eso?
Los más rápidos habrán pensado: “Fácil, coloco un archivo index.html en cada carpeta y así evito que se visualice nada”.
Pues es perfectamente correcta esta respuesta Ya sabemos que, si dentro de una carpeta existe un archivo llamado index.html (si es .php os recuerdo que también vale), en la mayoría de los casos el navegador mostrará ese archivo (a no ser que se haya cambiado deliberadamente la configuración del servidor, que repito, no es lo normal).
Sin embargo, no me negaréis que esta solución es poco elegante. Por ejemplo: ¿Qué pinta un archivo .html (o .php) en el directorio de las imágenes?
Aquí os muestro una solución más elegante y correcta que la anterior:
Lo que tenemos que hacer es crear un archivo llamado .htaccess (Alguno de vosotr@s ya sabéis para que sirve este archivo. Para el resto, os basta con saber que es un archivo usado para configurar el comportamiento del servidor apache).
Dentro de ese archivo, tan solo debemos poner esta línea: Options All -Indexes
Una vez escrito eso, grabamos los cambios y guardamos el archivo en el directorio que queremos bloquear. De esta forma, cada vez que alguien intente acceder a dicho directorio le saldrá algo como esto:
Mensaje de ejemplo de bloqueo de directorios