Node.js: как защитить себя от загрузки вредоносных файлов изображений?Т.е. как мне внедрить дезинфицирующее средство для изображений в Node? - PullRequest
0 голосов
/ 07 декабря 2018

Я создаю веб-приложение, использующее hapi.js, которое позволяет пользователям загружать изображения.Я проверяю загруженные изображения как на клиенте, так и на сервере, чтобы разрешить только файлы .jpg / .jpeg, .png и .gif.Тем не менее, я новичок в области безопасности веб-приложений, и когда дело доходит до очистки изображений, я немного растерялся.

Я пытаюсь следовать этим рекомендациям OWASP Подтверждение загрузки рекомендации:

  • Использование библиотек перезаписи изображений для проверки правильности изображения и удаления лишнего содержимого.
  • Установите расширение сохраненного изображения в качестве допустимого расширения изображения на основе обнаруженного типа содержимого изображения из обработки изображения (например, не доверяйте только заголовку при загрузке).

Это мои вопросы:

  • Могу ли я просто запустить каждое загруженное изображение через пакет типа sharp, и процесс перезаписи удалит любой встроенный код?Автор sharp сделал краткий комментарий по безопасности , но я до сих пор не понимаю, каковы возможные проблемы безопасности или как их решить.
  • Я прочитал комментарии, в которых говорится, что чтение байтов в Buffer не может выполнить вредоносный код .Если бы я должен был ввести файл в sharp как объект Buffer, удалил ли бы он какой-либо вредоносный код и исключил бы возможные проблемы безопасности?
  • Нужно ли запускать загруженные изображения с помощью антивирусной проверки (например, clamscan или node-virustotal или Web Exploit Detector)?Если да, нужно ли мне запускать изображения через сканирование до или после того, как я запускаю изображения через процессор изображений, или мне следует выполнять сканирование без обработки изображений?

Мне бы очень хотелось понятьБезопасность веб-приложений лучше (особенно для приложений Node), поэтому любые указания, которые вы можете дать мне по этим вопросам (или места, где я могу узнать больше), будут очень благодарны.

Спасибо!

...