Я написал модуль apache 2.x, который пытается сканировать тела запросов и условно возвращает 403 Запрещено, если совпадают определенные шаблоны.
Моя первая попытка использовала ap_hook_handler
для перехвата запроса, отсканируйте его изатем вернул DECLINED
, чтобы реальный обработчик мог вступить во владение (или 403, если были выполнены условия).
Проблема с этим подходом заключается в том, что я читаю тело запроса POST (используя ap_get_client_block
и друзей),он, очевидно, потребляет тело, поэтому, если запрос был впоследствии обработан mod_proxy, тело исчезло.
Я думаю, что правильным способом сканирования тела было бы использование входного фильтра, за исключением того, что входной фильтр может возвращать толькоAPR_SUCCESS
или не удастся.Любые коды возврата, кроме APR_SUCCESS, преобразуются в HTTP 400 Bad Request
.
. Я думаю, что, возможно, я смогу сохранить флаг в примечаниях к запросу, если фильтр ввода хочет отклонить запрос, но я не уверен, какой позжекрюк, чтобы получить это.