Guía defensiva
¿Cómo leer rutas con Python sin asumir que son seguras?
Una ruta es texto que identifica una ubicación, no una prueba de que sea apropiada para una tarea. Validarla empieza por definir el directorio de trabajo permitido.
Fija una base autorizada
El programa debe conocer qué carpeta de práctica está permitido leer. Construir una ruta desde esa base es más claro que aceptar una ubicación completa de una entrada externa. Normalizar una ruta ayuda a comparar, pero no reemplaza una política de acceso.
Ejemplo: un analizador recibe el nombre eventos.jsonl y lo busca dentro de un directorio temporal controlado. Antes de abrirlo, verifica que el resultado permanezca bajo la base definida. No pruebes el caso con archivos personales o de otro sistema.
Maneja ausencia y tipo
Una ruta puede no existir, señalar un directorio o no ser legible. Trata cada caso como resultado esperado que el programa debe comunicar, no como motivo para continuar con datos inventados. Los mensajes deben ser útiles sin revelar rutas sensibles.
La comprobación de existencia tiene límite temporal: el archivo puede cambiar antes de abrirse. Para prácticas iniciales, registra el error y evita acciones destructivas; para sistemas reales, sigue el diseño y controles de concurrencia aprobados.
No confundas nombre con contenido
Una extensión como .json no demuestra formato ni seguridad. Abre sólo archivos del alcance y valida su estructura antes de procesarlos. Mantener estos pasos separados permite informar si el problema fue ruta, permiso o contenido.
Las rutas de registro deben tratarse con el mismo cuidado que otros datos. No las imprimas completas en informes públicos ni devuelvas excepciones sin revisar. Conserva detalles para el canal autorizado de depuración.
Escribe pruebas pequeñas
Una prueba puede cubrir un nombre válido, uno ausente y uno que intenta salir de la base. El resultado esperado es que el programa lea sólo el archivo permitido y explique los demás casos sin abrirlos.
Esta pauta no promete proteger cada entorno por sí sola. Forma parte de una decisión mayor que incluye permisos del sistema, identidad del proceso y revisión de dependencias.