Я реализую загрузку PDF с использованием Carrierwave с Rails 4. Я спросил у клиента о вредоносном контенте, например. если кто-то пытается загрузить вредоносный файл, замаскированный в виде pdf. Я буду ограничивать тип файла на интерфейсе «application/pdf». Есть ли что-то еще, о чем мне нужно беспокоиться, если у загруженного файла есть расширение .pdf?PDF-загрузка вредоносного контента с помощью Rails
ответ
Загрузка файлов часто является проблемой безопасности, поскольку существует множество способов сделать это неправильно. Что касается вопроса о маскировке вредоносного файла как PDF, проверка типа содержимого (application/pdf
) является хорошей, но недостаточной, поскольку она контролируется клиентом и может быть изменена.
- Фильтрация по расширению
.pdf
, безусловно, желательно, но убедитесь, что вы не принимать файлы, какvirus.pdf.exe
. - Существуют другие методы атаки на имя файла, например. включая нулевые или контрольные символы.
- Рассмотрите возможность использования детектора типа файла, чтобы определить, что файл действительно является PDF-документом.
Но это только для ограничения типа файла. Есть много других проблем, о которых вам нужно знать при принятии загрузки файлов.
- Файлы в формате PDF могут содержать вредоносный код и являются распространенным атакным вектором.
- Убедитесь, что загруженные файлы записаны в соответствующий каталог на сервере. Если они не предназначены для публичного доступа, выберите каталог за пределами корня веб-сайта.
- Ограничить максимальный размер загружаемого файла.
Это еще не полный список. Обратите внимание на уязвимость Unrestricted File Upload от OWASP для получения дополнительной информации.
В дополнение к большому ответ @StefanOS «с, PDF-файлы должны начать со строки:
%PDF-[VERSION]
Как правило, по крайней мере, часто первые несколько байт (или больше) указывают тип файла - особенно для исполняемых файлов (т. е. исполняемые файлы Windows, называемые PE-файлами, должны запускаться - если память обслуживается - с «MZ
»).
Для загрузки файлов в формате PDF открытие загруженного файла и чтение первых 5 байтов должно всегда давать %PDF-
.
Это может быть достаточно хорошая проверка. для большинства случаев использования.
- 1. Mono.Cecil - обфускация вредоносного кода
- 2. обнаружение и удаление вредоносного ПО в приложении Rails
- 3. Расширение Rails приложения с помощью стандартных страниц контента
- 4. Система ввода контента Rails 4
- 5. C++ Наращивание вредоносного кода
- 6. Существует обычная практика отклонения «вредоносного» пользователя от приложения rails
- 7. Rails - обновление и удаление контента?
- 8. document.referrer проверить наличие вредоносного кода
- 9. Поиск вредоносного ПО на сайте
- 10. Назначение вредоносного файла на хостинг
- 11. Обновление контента на лету в Rails
- 12. Что такое определение «вредоносного скрипта»
- 13. Отслеживание попыток взлома/вредоносного ПО
- 14. regex вопрос для удаления вредоносного кода javascript
- 15. Rails 3 + JSON + Длина контента не отправлена
- 16. Rails 3 ответный тип и тип контента
- 17. Автоматическое обновление контента (с помощью механизма шаблонов) с помощью JQuery
- 18. Создание динамического контента с помощью AngularJS
- 19. показ и скрытие контента с помощью Javascript
- 20. Как протестировать область контента с помощью Транспортатора?
- 21. Динамическая загрузка контента с помощью Ajax
- 22. отладка Flash-контента с помощью flex debugger
- 23. добавления контента в список с помощью флажка
- 24. Скрытие/отображение дополнительного контента с помощью Javascript
- 25. загрузка контента с помощью питона переменных
- 26. Загрузить следующий комплект контента с помощью AngularJS
- 27. Измените «Имя» контента с помощью службы содержимого
- 28. Лучший способ отправки контента с помощью jQuery
- 29. Нажатие неотображаемого контента с помощью git
- 30. набор контента доступны с помощью Луны APNs