1. import java.io.File;
  2. import java.util.regex.Pattern;
  3. class DirectorySanitizer {
  4. /**
  5. * Sanitizes a directory path to prevent malicious execution.
  6. *
  7. * @param input The directory path to sanitize.
  8. * @return A sanitized directory path, or null if the input is invalid.
  9. */
  10. public static String sanitizeDirectory(String input) {
  11. if (input == null || input.trim().isEmpty()) {
  12. return null; // Handle null or empty input
  13. }
  14. // Basic validation: Check for dangerous characters and path traversal attempts.
  15. String sanitizedPath = input.replaceAll("[<>\\\"/\\?*]", ""); // Remove potentially harmful characters
  16. sanitizedPath = sanitizedPath.replace("..", ""); // Remove path traversal sequences
  17. // Validate the sanitized path to ensure it's a valid directory.
  18. File file = new File(sanitizedPath);
  19. if (!file.exists() || !file.isDirectory()) {
  20. return null; // Invalid directory
  21. }
  22. return sanitizedPath;
  23. }
  24. public static void main(String[] args) {
  25. // Example usage
  26. String input1 = "/path/to/my/directory";
  27. String sanitized1 = sanitizeDirectory(input1);
  28. System.out.println("Input: " + input1 + ", Sanitized: " + sanitized1); // Expected: /path/to/my/directory
  29. String input2 = "c:\\path\\to\\my\\directory";
  30. String sanitized2 = sanitizeDirectory(input2);
  31. System.out.println("Input: " + input2 + ", Sanitized: " + sanitized2); // Expected: c:\path\to\my\directory
  32. String input3 = "path/to/../another/directory";
  33. String sanitized3 = sanitizeDirectory(input3);
  34. System.out.println("Input: " + input3 + ", Sanitized: " + sanitized3); // Expected: path/to/another/directory
  35. String input4 = "invalid/path";
  36. String sanitized4 = sanitizeDirectory(input4);
  37. System.out.println("Input: " + input4 + ", Sanitized: " + sanitized4); // Expected: null
  38. String input5 = null;
  39. String sanitized5 = sanitizeDirectory(input5);
  40. System.out.println("Input: " + input5 + ", Sanitized: " + sanitized5); // Expected: null
  41. String input6 = "";
  42. String sanitized6 = sanitizeDirectory(input6);
  43. System.out.println("Input: " + input6 + ", Sanitized: " + sanitized6); // Expected: null
  44. }
  45. }

Add your comment