2016-12-02 4 views
2

Я реализую загрузку PDF с использованием Carrierwave с Rails 4. Я спросил у клиента о вредоносном контенте, например. если кто-то пытается загрузить вредоносный файл, замаскированный в виде pdf. Я буду ограничивать тип файла на интерфейсе «application/pdf». Есть ли что-то еще, о чем мне нужно беспокоиться, если у загруженного файла есть расширение .pdf?PDF-загрузка вредоносного контента с помощью Rails

ответ

3

Загрузка файлов часто является проблемой безопасности, поскольку существует множество способов сделать это неправильно. Что касается вопроса о маскировке вредоносного файла как PDF, проверка типа содержимого (application/pdf) является хорошей, но недостаточной, поскольку она контролируется клиентом и может быть изменена.

  • Фильтрация по расширению .pdf, безусловно, желательно, но убедитесь, что вы не принимать файлы, как virus.pdf.exe.
  • Существуют другие методы атаки на имя файла, например. включая нулевые или контрольные символы.
  • Рассмотрите возможность использования детектора типа файла, чтобы определить, что файл действительно является PDF-документом.

Но это только для ограничения типа файла. Есть много других проблем, о которых вам нужно знать при принятии загрузки файлов.

  • Файлы в формате PDF могут содержать вредоносный код и являются распространенным атакным вектором.
  • Убедитесь, что загруженные файлы записаны в соответствующий каталог на сервере. Если они не предназначены для публичного доступа, выберите каталог за пределами корня веб-сайта.
  • Ограничить максимальный размер загружаемого файла.

Это еще не полный список. Обратите внимание на уязвимость Unrestricted File Upload от OWASP для получения дополнительной информации.

1

В дополнение к большому ответ @StefanOS «с, PDF-файлы должны начать со строки:

%PDF-[VERSION] 

Как правило, по крайней мере, часто первые несколько байт (или больше) указывают тип файла - особенно для исполняемых файлов (т. е. исполняемые файлы Windows, называемые PE-файлами, должны запускаться - если память обслуживается - с «MZ»).

Для загрузки файлов в формате PDF открытие загруженного файла и чтение первых 5 байтов должно всегда давать %PDF-.

Это может быть достаточно хорошая проверка. для большинства случаев использования.

Смежные вопросы