String.format()
ничего не делает если ваша строка не является format string, и вы добавляете дополнительные аргументы, поэтому в этом случае похоже, что вы просто скрываете предупреждение. Скорее всего FindBugs знает, что new File(a + b);
является, возможно, ошибкой, но не знает, есть ли ошибка new File(someFunction());
.
По the documentation for PT_RELATIVE_PATH_TRAVERSAL:
Программное обеспечение использует параметр запроса HTTP, чтобы построить путь , который должен быть в пределах ограниченного каталога, но это не правильно обезвредить последовательности, такие как «..», который может разрешить местоположение, которое находится за пределами этого каталога. См. http://cwe.mitre.org/data/definitions/23.html для получения дополнительной информации.
FindBugs выглядит только для наиболее вопиющих, очевидных случаев относительного обхода пути . Если FindBugs нашел что-нибудь, у вас почти наверняка будет больше уязвимостей, которые FindBugs не сообщает. Если вас беспокоит об относительном обходе пути, вам следует серьезно подумать об использовании коммерческого статического анализа или инструмента для проверки пера .
Итак, String.format()
трюк работает, потому что FindBugs может только поймать очевидные случаи, но большая проблема, как представляется, что это вызывает уязвимость:
Это позволяет злоумышленникам пересекать файловую систему для доступа к файлам или каталогам, которые находятся за пределами ограниченного каталога.
Непонятно, что именно заставляет FindBugs показывать это предупреждение, поскольку вы не размещали свой код, но похоже, что это может быть довольно серьезным. Вероятно, вы хотите исправить это, вместо того чтобы игнорировать предупреждение.
Что предупреждения вы получаете? –
Это предупреждение PT_RELATIVE_PATH_TRAVERSAL – emochoco