У меня есть два вопроса, о которых сонар печально. Сначала один в строке коды с относительным путем обходом вопросом, который выглядит следующим образом:Пасс сонара PT_RELATIVE_PATH_TRAVERSAL в java
File f = new File(MY_DIR + filename);
Где файл является параметром, я получил от запроса.
Вторая строка - об абсолютной проблеме обхода пути, которая выглядит так же, за исключением того, что нет MY_DIR спереди.
Я добавил проверку достоверности после этих строк, используя метод, который гарантирует, что файл находится в директории my_dir используя канонические пути, так что теперь она выглядит следующим образом:
...
File rootDirFile = new File(MY_DIR);
if (validateFileName(rootDirFile, f)) {
...
private static boolean validateFileName(File targetDir, File fileToCheck) throws IOException {
String targetDirPath = targetDir.getCanonicalPath() + File.separator;
String pathToCheck = fileToCheck.getCanonicalPath();
return pathToCheck.startsWith(targetDirPath);
}
Но эхолота еще говорят, что я У меня есть уязвимость в этих двух строках. Как это сказать, я нашел решение?
Спасибо! Это похоже на решение для меня :) –