Hay un archivo en casi todos los sitios web que vive en una ruta fija y predecible: https://tu-sitio.cl/robots.txt. No requiere contraseña. Cualquiera lo puede abrir en el navegador ahora mismo.
Fue diseñado para decirle a Google “este directorio no lo indexes, por favor”. El problema es que quien quiere encontrar rutas interesantes en un sitio, ese archivo es lo primero que revisa.
Para qué existe
robots.txt es parte del Robots Exclusion Protocol — un acuerdo informal entre sitios web y motores de búsqueda. Básicamente es una lista de instrucciones para bots bien educados:
User-agent: *
Disallow: /admin/
Disallow: /backup/
Disallow: /staging/
La intención es razonable: evitar que el panel de administración aparezca en los resultados de búsqueda. El error está en creer que eso lo oculta.
El malentendido: “no indexar” no es lo mismo que “ocultar”
robots.txt no es un control de acceso. Es un archivo de texto con sugerencias para bots que decidan respetarlo.
Cuando agregas /admin/ al Disallow, Google lo respeta y no lo indexa. Pero cualquier persona (o script de reconocimiento) lee tu robots.txt primero y obtiene exactamente el mapa de lo que quieres esconder.
Es como poner un cartel en la puerta de tu bodega que dice “aquí guardamos los documentos confidenciales, por favor no entrar”. El cartel no impide la entrada — solo señala dónde está lo interesante.
Qué suelen revelar
En los escaneos de FreeScan es frecuente encontrar robots.txt que exponen rutas como:
/admin/,/administrator/,/wp-admin//backup/,/backups/,/old/,/old-site//staging/,/dev/,/test//config/,/conf//api/internal/,/api/v1/private/
Si alguna de esas rutas existe en tu servidor sin autenticación, el robots.txt acaba de anunciarlo.
Qué hacer
Protege las rutas que importan
robots.txt no reemplaza la autenticación. Si una ruta es sensible, la protección tiene que ser técnica.
En Apache, para que /admin/ solo sea accesible desde tu IP:
<Directory "/var/www/html/admin">
Require ip 203.0.113.10
</Directory>
En nginx:
location /admin/ {
allow 203.0.113.10;
deny all;
}
Sé mínimo con lo que listas
Si no tienes una razón concreta para incluir una ruta, no la incluyas. La mayoría de los sitios puede usar simplemente:
User-agent: *
Disallow:
Eso le dice a Google que puede indexar todo sin revelar nada.
Si quieres bloquear todo el sitio a los crawlers (útil en entornos de staging):
User-agent: *
Disallow: /
Usa noindex en las páginas que no quieres indexar
Para páginas concretas como la de login o de confirmación de formulario, la alternativa correcta es una etiqueta en el HTML de esa página:
<meta name="robots" content="noindex, nofollow">
Le dices a Google “no indexe esta página” sin publicar un mapa de rutas.
Cómo verificar el tuyo ahora mismo
Abre en tu navegador:
https://tu-sitio.cl/robots.txt
Léelo con ojos de atacante: ¿alguna de esas rutas revela algo que no quieres compartir? ¿Están realmente protegidas por autenticación?
También puedes consultarlo desde terminal:
curl -s https://tu-sitio.cl/robots.txt
La regla de oro
robots.txt controla la indexación en buscadores. No es seguridad ni oculta nada de nadie que no sea un crawler bien educado.
Si algo es sensible, protégelo con acceso restringido. Si no es sensible, no importa que aparezca en el archivo. Y si aparece en el archivo pero no está protegido — ese es el problema real.