Проблема, которую мы пытаемся решить, заключается в том, что злоумышленник отправляет путь вроде ../../../../../../../etc/passwd.Веб-приложение на Java может с радостью предоставить злоумышленнику файл passwd.Поэтому мы форсируем использование канонических путей.Это может быть не удобно во многих приложениях, но это очень важно.В этом случае «../conf/» будет только одним физическим местом в файловой системе, так как значение привязано к пути к базовому каталогу проекта (который я определил как «родительский» аргумент), поэтому этоизвестен.
недавнее добавление аргумента "parent" предполагает, что входной путь не должен быть каноническим.здесь вызов метода: getValidDirectoryPath ("Context", "../conf/", ".", false);
public void testGetValidDirectoryPath() throws Exception {
System.out.println("getValidDirectoryPath");
Validator instance = ESAPI.validator();
ValidationErrorList errors = new ValidationErrorList();
// find a directory that exists
File parent = new File("/");
String path = ESAPI.securityConfiguration().getResourceFile("ESAPI.properties").getParentFile().getCanonicalPath();
instance.getValidDirectoryPath("dirtest1", path, parent, true, errors);
assertEquals(0, errors.size());
instance.getValidDirectoryPath("dirtest2", null, parent, false, errors);
assertEquals(1, errors.size());
instance.getValidDirectoryPath("dirtest3", "ridicul%00ous", parent, false, errors);
assertEquals(2, errors.size());
}
Посетите следующий веб-сайт для получения дополнительной информации: https://www.jtmelton.com/2010/05/02/the-owasp-top-ten-and-esapi-part-4-malicious-file-execution/