Существуют ли какие-либо стандартные методы библиотеки, которые могут отфильтровывать пути, которые включают в себя специальные последовательности обхода, такие как ../
и все другие свернутые формы переходов по каталогу вверх, для защиты ввода API-файла пути от обхода вверх данного «корневого» пути?Фильтрация дорожного обхода в Java (или Scala)
У меня есть класс, который содержит элемент значения корневой папки и функцию-член, которая принимает пути для рекурсивного удаления. Моя цель - сделать этот API безопасным, отфильтровывая любой входной путь, предоставленный ему, - который переведет на путь вверх значения корневой папки. Цель состоит в том, что этот класс был бы либерально использован для удаления файлов под корневым путем, но он никогда не коснется чего-либо вверху корневого пути.
Это похоже на более широкий path traversal attack.
Способы, которые являются слишком ограничительными (т. Е. Могут приводить к ложным негативам), могут быть прекрасными для моего конкретного случая использования, если это упрощает вещи, а также мои текущие потребности связаны с файловыми путями, а не с веб-сайтами (хотя веб-сайт модуль для эквивалентного радиуса может теоретически работать здесь).
Как вы подвергая эти пути к Сети? В целом, такие среды, как Spring, неплохо справляются с этими атаками, поэтому вам редко приходится добавлять к ним любой другой уровень безопасности. – Makoto
Я не. Это относится к API-интерфейсу backend devops, который включает в себя некоторую логику удаления файлов, и ему нужно избегать удаления файлов за пределами данной корневой папки без помощи разрешений файловой системы ОС. – matanster
О каких путях мы говорим здесь? 'java.nio.file.Path' имеет методы консолидации относительных путей файлов на базу, например. – biziclop