Всем привет!
Пользователь может загрузить фотку на сервер. Далее бэк эту фотку загружает на стороннее хранилище и удаляет у себя эту фотку. Вопрос такой: может ли пользователь через этот файл загрузить какую-нибудь инъекцию?
В теории можно загружать только фотографии. Поэтому, при получении файла проверяется тип MIME, размеры фотографии и размер файла.
Какой потенциальный вред могут нанести хацкеры и как можно защититься от этого?
Теоретически, могут использоваться дырки в декодерах JPG / PNG. Но я не слышал, чтобы они встречались в дикой природе, и цель их - не сервер, а клиенты, у которых эта картинка отображается.
Можете перегнать ее сами, изменив размер и перезаписав, раз уж все равно заморочились проверками. Только - после проверок, а то могут подсунуть уже инъекцию для сервера.
на 100% защититься сложно. Минимально - проверять картинку на корректность. Например выполнять ее ресайз графической утилитой или библиотекой. Удалось - значит как минимум картинка.
Защитится от такого можно только урезая права и время жизни приложений занимающихся обработкой ввода пользователя. В общем контейнеры являются типовым решением для запуска дырявого ПО. Ну или микросервисы, сейчас WebAssembly в эту сторону толкают.
Может быть просто делать копию картинки с нужным ресайзом, а оригинал удалять? Тогда вредоносный код точно не пройдет. Ну и хранить в папке, где нет прав на выполнение файлов.