Отказ в обслуживании PHP multipart/form-data — Уязвимости
Описание
Это оповещение было создано с использованием только информации баннера. Это может быть ложное срабатывание.
Когда вы отправляете запрос POST скрипту PHP с типом содержимого multipart/form-data и включаете в этот запрос список файлов, PHP создаст временный файл для каждого файла из запроса. PHP создаст эти файлы независимо от того, может ли скрипт обрабатывать загрузку файлов или нет. После выполнения скрипта временные файлы будут удалены. Проблема в том, что в запрос можно включить очень большое количество файлов. PHP должен будет создать эти файлы до того, как скрипт будет выполнен, а затем удалить их.
Состояние отказа в обслуживании появляется при создании группы запросов, каждый из которых содержит большое количество (15000+) файлов. Когда вы отправляете эти запросы на веб-сервер, веб-сервер падает и перестает отвечать, потому что ему нужно обработать (создать и удалить) безумное количество файлов за очень короткий период времени.
Затронутые версии PHP (до 5.3.0).
Исправление
Обходные пути:
1. Отключить загрузку файлов
Если вам не нужна загрузка файлов, вы можете отключить эту функцию из php.ini Если вы не можете отключить загрузку файлов на своем сайте, рекомендуется установить последнюю версию PHP. PHP 5.3.1 включает исправление для этой проблемы:
— добавлена директива max_file_uploads INI, которая может быть установлена для ограничения количества загрузок файлов на запрос до 20 по умолчанию, чтобы предотвратить возможный DOS из-за временного исчерпания файлов.
3. Установите расширение Suhosin PHP
Расширение Suhosin PHP имеет параметр с именем suhosin.upload.max_uploads . Этот параметр определяет максимальное количество файлов, которые могут быть загружены одним запросом, и по умолчанию установлено значение 25. Расширение Suhosin PHP не следует путать с Suhosin Patch, который не защищает от этой атаки.
Ссылки
Связанные уязвимости
Серьезность
СерединаКлассификация
CVE-2009-4017 КВЕ-400 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HМетки
Отказ в обслуживании Отсутствует обновлениеЧто такое данные составной формы Enctype в HTML — PHPZAG.
COMКоманда PHPZAG PHP
В HTML-формах атрибут enctype используется для обработки кодирования данных, отправленных из формы. Когда мы используем действие формы GET или POST , мы должны кодировать данные формы, чтобы получить данные, отправленные из формы. HTML-формы предоставляют три метода кодирования. По умолчанию используется application/x-www-form-urlencoded , что более или менее совпадает со строкой запроса в конце URL-адреса. multipart/form-data — более сложная кодировка, но она позволяет включать целые файлы в данные формы.
Также читайте:
- Загрузить несколько изображений с помощью jQuery, PHP и MySQL
- Уменьшение или сжатие размера изображения при загрузке в PHP
- Загрузка изображения без обновления страницы с помощью PHP и jQuery
- Загрузка файла Amazon S3 с использованием PHP
- Загрузка нескольких файлов Angular с помощью PHP и MySQL
- Создание миниатюр при загрузке изображений с помощью PHP и jQuery
- Загрузка файла Amazon S3 с помощью JavaScript
Итак, когда у нас есть HTML-форма с типом ввода файла для загрузки файлов, нам нужно передать multipart/form-data с формой.
Существует три значения атрибута формы enctype для использования с формой HTML. Мы объясним каждый в деталях.
1. application/x-www-form-urlencodedЭто значение атрибута enctype по умолчанию, и нет необходимости передавать атрибут enctype с этим значением, если требуется кодировка данных формы по умолчанию. С этим значением атрибута все символы кодируются перед отправкой. Пробелы закодированы с помощью + символы и специальные символы кодируются в значения ASCII HEX.
2. multipart/form-dataКогда мы используем значение атрибута enctype multipart/form-data , символы не кодируются. Данные формы передаются в виде потока MIME. Это значение атрибута enctype используется, когда нам нужно использовать форму с файлом типа ввода для загрузки файлов.