Я выполняю загрузку изображений через форму браузера и работаю с AWS и NodeJS.Процесс заключается в том, что пользователь выбирает файл, предоставляет дополнительную информацию, и все это отправляется на сервер с помощью multipart/form-data
.
Это прекрасно работает, поэтому полезная нагрузка проходит через шлюз API ---> Лямбда, и эта лямбда загружается в корзину S3.Я использую busboy для работы с многокомпонентными данными и в итоге получаю хороший объект JSON, содержащий все данные, отправленные из внешнего интерфейса, что-то вроде:
{
userName: "Homer Simpson",
file: base64endcoded_string,
}
Затем я беру это base64endcoded_string
и загрузить на S3, чтобы файл находился там, и я могу открыть его, загрузить и т. д.
Теперь, очевидно, я не доверяю никаким данным из внешнего интерфейса, и мне интересно, каков наилучший способ гарантировать, чтоотправляемый файл не является вредоносным.В этом случае мне нужно разрешить загружать только изображения, скажем, png, jpg / jpeg размером до 2 МБ.
Busboy дает мне тип MIME, кодировку и другие детали, но не уверен, достаточно ли это надежно или яследует использовать что-то вроде mmmagick или другое.Насколько безопасными и надежными будут эти решения?Любые указатели будут высоко оценены.