Как я могу заблокировать загрузку файлов в Rails? - PullRequest
0 голосов
/ 11 июня 2019

У меня есть приложение rails (v4.2).У меня есть два действия, которые позволяют загружать изображения с помощью скрепки.У меня есть проверка скрепки для типов MIME.

Антивирус на сервере обнаружил несколько файлов PHP в / tmp, как этот:

/tmp/RackMultipart20190610-9668-u9nebk.php

Iпредположим, что они созданы в процессе загрузки файла.

Два вопроса:

  1. Как я могу отследить, откуда они пришли?Просматривая свой файл production.log, я вижу кучу 404-х сообщений для поддельных путей joomla и wordpress .php, но ничего такого, что могло бы быть причиной этих загрузок.

  2. Как я могу предотвратитьих в будущем?

Я использую стойку и могу блокировать расширения файлов .php, но как я могу заблокировать загрузку файлов в формах?

У нас есть два местагде зарегистрированные пользователи могут загружать изображения или файлы PDF.Как я могу заблокировать все другие попытки загрузки файлов?

1 Ответ

2 голосов
/ 11 июня 2019

Обход загрузки файлов - это распространенный метод загрузки веб-оболочек и прочего.

Существует 2 основных метода, которые помогут вам уменьшить количество файлов, загружаемых на ваш сервер:

MIME Проверка типа содержимого: если вы проверяете тип содержимого загруженного файла, то вы (так как вам нужны изображения) вы можете убедиться, что загружены только файлы типа изображения:

:content_type => ["image/gif", "image/jpg", "image/jpeg", "image/png", "image/bmp", "image/x-bmp"]

Но это все жеможно обойти, поэтому вам нужно добавить еще одну проверку:

Проверка расширения файла: вы также должны добавить проверку расширения файла, чтобы убедиться, что вы разрешаете только расширения типа изображения для своей загрузки.

Iнашел классный пост, в котором показана хорошая реализация проверки расширений файлов: https://stevenyue.com/blogs/validate-attachment-file-size-and-type-in-rails/

Убедитесь, что вы реализовали оба эти метода, и у вас все должно быть в порядке.

...