Cómo funciona esta comprobación
Scanaris pide siete carpetas habituales de tu dominio: /uploads/, /images/, /assets/, /files/, /backup/, /static/ y /media/. Si alguna responde con una página cuyo título o encabezado es "Index of …", el formato que generan Apache, nginx y la mayoría de servidores cuando listan un directorio, abre un hallazgo de severidad media con la ruta. No se marca un 200 cualquiera: una aplicación de una sola página que devuelve su HTML para todas las rutas no cumple el patrón.
Por qué importa
Un listado convierte una carpeta en un catálogo navegable de todo lo que contiene, incluido lo que nunca enlazaste desde ninguna página: copias de seguridad, exportaciones, documentos subidos por usuarios, versiones antiguas de archivos, imágenes de productos aún no publicados. No hace falta adivinar nombres; el servidor los entrega ordenados y con fecha. Y es el primer sitio donde mira un escáner automático, porque encontrar un listado abierto suele llevar a algo peor en la misma carpeta.
Por qué ocurre
El servidor web, al recibir una petición a una carpeta sin un index.html dentro, tiene dos opciones: responder 403 o generar una lista. Apache y algunos paneles de hosting compartido vienen con la lista activada; nginx la tiene apagada salvo que alguien la encendiera con autoindex on. En aplicaciones Express, un serve-index olvidado o un express.static con opciones de listado hacen lo mismo.
Cómo arreglarlo
- nginx: busca
autoindex onen la configuración y cámbialo aoff(o elimínalo; apagado es el valor por defecto). - Apache: en el VirtualHost o en un
.htaccessde la raíz,Options -Indexes. - Express: quita cualquier uso de
serve-indexy comprueba queexpress.staticsolo apunta a la carpeta de build. - Hosting compartido: el panel suele tener una opción "Index Manager" o "Directory browsing"; ponla en "No indexing" para el dominio.
- Vercel, Netlify y similares no generan listados; si ves el hallazgo ahí, la carpeta pertenece a otro servidor que responde bajo tu dominio.
Después, revisa qué había en las carpetas listadas: todo lo que estaba ahí era público aunque ya no se vea la lista. Si había copias de seguridad o datos de usuarios, dalos por descargados y actúa en consecuencia. Y mueve lo privado fuera del directorio que sirve el servidor; el check de archivos sensibles y el de copias de seguridad expuestas cubren los casos más graves.
Comprueba que está arreglado
for d in uploads images assets files backup static media; do
printf "%-10s " "$d"; curl -s "https://tudominio.com/$d/" | grep -c "Index of"
done
Todos deben devolver 0. Prueba también cualquier otra carpeta que sepas que existe en tu servidor, como /wp-content/uploads/ o /docs/.
Preguntas frecuentes
Mi carpeta de imágenes es pública de todos modos. ¿Qué más da que se liste?
La diferencia está entre que alguien pueda ver una imagen cuya URL conoce y que pueda ver todas, incluidas las que subiste para una campaña que aún no ha salido o las de un cliente concreto. El listado también revela nombres de archivos que a veces incluyen datos personales.
¿Por qué solo prueba siete carpetas?
Son las que concentran la mayoría de los listados abiertos en webs reales. Si tu servidor tiene el listado activado, lo normal es que esté activado para todas, así que la corrección en la configuración lo cierra en todas partes.
¿Un listado en una carpeta vacía es un problema?
Menor, pero indica que el listado está activado en el servidor. Apágalo igualmente: la carpeta no estará vacía siempre.