Покрытие синопсиса по-прежнему возвращает путь к файловой системе, имя файла или манипуляцию с URI в Java, несмотря на вJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Покрытие синопсиса по-прежнему возвращает путь к файловой системе, имя файла или манипуляцию с URI в Java, несмотря на в

Сообщение Anonymous »

Покрытие синопсиса по-прежнему возвращает путь к файловой системе, имя файла или манипуляции с URI в Java, несмотря на внесение рекомендуемого исправления.
Хотя эти два следующих вопроса дают объяснение того, что делать, они не могут исправить предупреждение, создаваемое инструментом.
Проблемы покрытия для манипуляций с путем файловой системы, именем файла или URI в Java
Как исправить «уязвимость манипулирования путем» в немного Java Код?
Чтобы внести ясность, прежде чем кто-то закроет этот дубликат, эти два ответа не решают проблему полностью.
Вот код, который имел первоначально последовало предупреждение, которое по-прежнему содержит предупреждение о закрытии пути к файловой системе, имени файла или манипуляции с URI.
Исходный код:
public String deleteFiles(List filesToDelete){
filesToDelete.forEach(file -> {
logger.info("Deleting file " + file);
Path path = Paths.get(file).normalize();
new File(path).delete();
});
}

Исправление кода, которое по-прежнему возвращает предупреждение о покрытии:
private static boolean doesFilenameTryPatternTraversal(String filename) {
return Pattern.compile("\\.\\.|\\|/").matcher(filename).find();
}

private void deleteFiles(List filesToDelete) {
filesToDelete.forEach(file -> {
logger.info("Deleting file {}", file);
if (doesFilenameTryPatternTraversal(file)) {
throw new RuntimeException(
"filename: '" + file + "' attempting to access a file outside of expected directory.");
}

Path canonicalPath = basePath.resolve(Paths.get(file).toAbsolutePath().normalize());
if (canonicalPath.startsWith(basePath.toString())) {
try {
Files.delete(canonicalPath);
} catch (IOException e) {
throw new RuntimeException("Could not delete file '" + file + "'.", e);
}
} else {
throw new SecurityException("File '" + file + "' is outside the allowed directory");
}
});
}


Подробнее здесь: https://stackoverflow.com/questions/763 ... ulation-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»