Блокировка запросов при загрузке файлов на сервер веб-приложения — одна из наиболее распространенных проблем, с которой может столкнуться пользователь при работе с WAF. Блокировка в этом случае может происходить по двум основным причинам:
- ограничение веб-сервера на передачу файлов определенного размера;
- передача бинарных данных.
Ограничение веб-сервера на передачу файлов определенного размера
Каждый веб-сервер в целях безопасности настроен на передачу файлов определенного размера (например, 1Мб для веб-сервера Nginx). При отправке клиентом файла больше допустимого размера веб-сервер возвращает ответ с кодом 413 Request Entity Too Large
. Основываясь на ограничениях веб-сервера, Немезида ВАФ также производит блокировку запроса при попытке загрузки файлов несоответствующего размера. Для исключения блокировок достаточно привести значение опции client_max_body_size
в соответствующем файле конфигурации веб-сервера к максимально допустимому значению размера передаваемых на веб-сервер файлов.
Пример:
client_max_body_size 30M;
После внесения изменений выполните перезапуск веб-сервера любым удобным способом для применения изменений.
Передача бинарных данных в запросе
Блокировка запросов в этом случае происходит из-за того, что при передаче файлов (PDF-документов, фотографий, файлов мультимедиа) по протоколу HTTP производится бинарное кодирование передаваемых данных. Закодированное содержимое представляет собой набор символов, при анализе которых практически всегда обнаруживаются последовательности символов, попадающие под одну или несколько сигнатур. После обнаружения сигнатур запрос блокируется. Из-за особенностей, описанных выше, анализ бинарного содержимого запросов является нецелесообразным, поэтому для URL-адресов, которые предназначены для загрузки файлов, рекомендуется деактивировать анализ сигнатурным методом.
Как определить, что передается бинарное содержимое
Проверьте содержимое заголовка Content-Type
. Если передается бинарное содержимое, то, в зависимости от типа файла, это может быть:
Также стоит обратить внимание на содержимое запроса, где в начале указывается «сигнатура» файла. Для PDF-файла сигнатура может быть записана как %PDF-1.3.%
, а для, RAR-архивов — Rar!...
.
Чтобы исключить обработку тела запроса сигнатурным методом для URL-адреса, необходимо в Личном кабинете использовать соответствующую опцию:
example.com/uploads/
Поскольку опция отключает проверку содержимого файлов сигнатурным методом, то функционал передачи файлов остается практически без защиты и может стать целью для злоумышленников, поэтому рекомендуется активировать проверку передаваемых файлов антивирусным ПО, например, ClamAV
.