Un directorio es una estructura de sistema de archivos organizacional que contiene archivos y directorios . Incluso un atacante puede intentar atravesar o acceder a una carpeta que llamamos ‘File Traversal Attack o Path Traversal Attack en un directorio diferente’. En resumen, aquí se recorre el directorio que está fuera del directorio de inicio/raíz. Estos archivos son archivos internos del servidor a los que el usuario no puede acceder.
Ataques transversales
- El atacante puede acceder al archivo desde un directorio diferente
- La exploración de directorios está permitida cuando el servidor está mal configurado
- A veces, incluso un atacante puede acceder a archivos que están más allá de los directorios raíz del navegador web.
Los requisitos previos requeridos son listFiles() y considerar que no hay ataques de cruce de ruta.
Distintas Maneras de recorrer en un Directorio
- Usando el método listFiles() de la clase File
- Usando el método walk() en Java 8 y en adelante
Método 1: Usar el método listFiles() de la clase File
Supongamos que existe un directorio con la ruta C:\\GFG. La siguiente imagen muestra los archivos y directorios presentes dentro de la carpeta GFG. El subdirectorio «Ritik» contiene un archivo llamado «Logistics.xlsx» y el subdirectorio «Rohan» contiene un archivo llamado «Payments.xlsx» .
Acercarse:
- Cree una array de archivos para almacenar el nombre y la ruta de los archivos.
- Llame al método displayFiles() para mostrar todos los archivos.
Ejemplo:
Java
// Java Program to Traverse Through a Directory // Importing required classes import java.io.File; // Main class class GFG { // Method 1 // To display fies public static void displayFiles(File[] files) { // Traversing through the files array for (File filename : files) { // If a sub directory is found, // print the name of the sub directory if (filename.isDirectory()) { System.out.println("Directory: " + filename.getName()); // and call the displayFiles function // recursively to list files present // in sub directory displayFiles(filename.listFiles()); } // Printing the file name present in given path else { // Getting the file name System.out.println("File: " + filename.getName()); } } } // Method 2 // Main driver method public static void main(String[] args) { // Storing the name of files and directories // in an array of File type File[] files = new File("C:\\GFG").listFiles(); // Calling method 1 to // display files displayFiles(files); } }
Producción:
File: article.docx File: GFG.txt File: numbers.txt Directory: Ritik File: Logistics.xlsx Directory: Rohan File: Payments.xlsx
Método 2: usar el método walk() en Java 8 y en adelante
Java 8 en adelante, se introdujo el método walk() para iterar sobre todo el directorio de forma recursiva y recuperar Stream<Path> como valor de retorno.
Acercarse:
- Cree una secuencia de rutas de archivo.
- Imprime todo el directorio y la ruta del archivo.
- Genera una excepción si no existe dicho directorio como se indica en la ruta.
Ejemplo:
Java
// Java Program to Display Files with // Complete Path Present in a Directory // Importing required classes import java.io.*; import java.nio.file.*; import java.util.stream.Stream; // Main class class GFG { // Main driver method public static void main(String[] args) throws IOException { // Creating try-catch block and // providing the directory path of local machine try (Stream<Path> filepath = Files.walk(Paths.get("c:\\GFG"))) { // Printing the name of directories and files // with entire path filepath.forEach(System.out::println); } // Catch block to handle exceptions catch (IOException e) { // If no such directory exists throw an // exception throw new IOException("Directory Not Present!"); } } }
Producción:
c:\GFG c:\GFG\article.docx c:\GFG\GFG.txt c:\GFG\numbers.txt c:\GFG\Ritik c:\GFG\Ritik\Logistics.xlsx c:\GFG\Rohan c:\GFG\Rohan\Payments.xlsx
Publicación traducida automáticamente
Artículo escrito por rohanchopra96 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA