Загружать изображения на сервер в NodeJS+Multer?

У меня есть форма, которая используется для загрузки изображений в бэкэнд, написанный на NodeJS+Multer. Backend проверяет размер файла и тип файла, поэтому пользователю не разрешается загружать любые другие файлы, кроме png/jpg/gif. Однако ничто не мешает пользователю переименовать .zip (или любой другой тип) файл в .png и загрузить на мой сервер. Это сохранит файл в папке изображений и позже может быть возвращено обратно в браузер по запросу.

Итак, теперь мой вопрос: это то, что меня должно беспокоить? Может ли он быть использован для нанесения какого-либо ущерба моему серверу или пользователям, которые позже будут получать это поддельное изображение в своих браузерах? Если так, как я могу предотвратить это? Я должен был бы проверить, является ли изображение допустимым файлом изображения как-нибудь? Должен ли я использовать что-то вроде Lwip?

1 ответ

Вы можете проверить mimetype файла.

//File filter to send only videos  
const fileFilter = (req, file, cb) => {
    // reject a file
    console.log(file.mimetype);
    if (file.mimetype.match(/^video\/\w+/)){
        cb(null,true);
    } else {
        console.log('File Extension not Allowed');
        cb(null, false);        
    }
 };

 //Multer
 const upload = multer({
   storage: storage,
   fileFilter: fileFilter
 });
Другие вопросы по тегам