#java #file #path #fortify
#java #файл #путь #укрепить
Вопрос:
Я получаю уязвимость при обработке пути для создания файла с новым ключевым словом
Я попытался очистить путь перед передачей его файловому объекту, но проблема сохраняется. Пробовал также эту ссылку: https://www.securecoding.cert.org/confluence/display/java/FIO00-J. Do not operate on files in shared directories
public static String sanitizePath(String sUnsanitized) throws URISyntaxException, EncodingException {
String sSanitized = SAPI.encoder().canonicalize(sUnsanitized);
return sSanitized;
}
//// the main method code snippet /////
String sSanitizedPath = Utils.sanitizePath(file.getOriginalFilename());
-- fortify scan detects problem here ..in below line --
File filePath = new File(AppInitializer.UPLOAD_LOCATION, sSanitizedPath);
String canonicalPath = filePath.getCanonicalPath();
FileOutputStream fileOutputStream = new FileOutputStream(canonicalPath);
После santizePath я думал, что проверка не будет pick, vulnerabilit, но это произошло.
Комментарии:
1. Я попробовал новый файл(path.normalize().toString()), но это также не работает. Фактически это подняло еще 1 флаг для уязвимости
Ответ №1:
Эта переменная «sUnsanitized» поступает из пользовательского ввода? Возможно, это ваша настоящая проблема.
Никогда не доверяйте пользовательскому вводу — это правило номер один для разработки.
Комментарии:
1. Имя файла берется из пользовательского ввода, другого способа нет, кроме как обработать ввод.
2. Вам действительно нужно сохранять исходное имя файла? Если это так, хорошо. Вам просто нужно позаботиться о самом имени файла. Я, парень, могу отправить вам .cmd, .bat, .exe что-то вроде этого. Если вы позаботитесь об этой проблеме, можете ли вы пометить это как ложноположительное.