Я работаю над приложением для обмена мгновенными сообщениями, где пользователи могут получать файлы от своих друзей.
Имена полученных файлов задаются отправителем файла, и несколько файлов могут отправляться вместе.с возможностью подкаталогов.Например, два файла, отправленные вместе, могут быть «1» и «sub / 2», так что загруженные результаты должны быть похожи на «downloads / 1» и «downloads / sub / 2».
Я волнуюсьо последствиях для безопасности этого.Прямо в голове, два потенциально опасных имени файла будут что-то вроде "../../../somethingNasty" или "~ /thingNasty" для Unix-подобных пользователей.Другие потенциальные проблемы, которые приходят мне в голову, - это имена файлов с символами, которые не поддерживаются в целевой файловой системе, но это кажется намного сложнее и, возможно, лучше их игнорировать?
Я рассматриваю удаление полученных имен файлов для ".."и «~», но этот тип «черного списка», когда я по отдельности думаю о проблемных случаях, вряд ли является рецептом хорошей безопасности.Каков рекомендуемый способ очистки имен файлов, чтобы гарантировать, что ничего зловещего не произойдет?
Если это имеет значение, мое приложение работает на C ++ с каркасом QT.