Назад | Перейти на главную страницу

Как фильтровать данные POST с помощью mod_security, когда тип text / xml?

Я пытаюсь создать правило, которое соответствовало бы определенному регулярному выражению в запросах POST.

Правило, которое у меня есть, выглядит так;

SecRule REQUEST_FILENAME "form.php" \
  "id:'12345',chain,deny,status:406,log,msg:'foobar detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(bad|words|to|be|blocked))"

Правило работает, когда тип контента не является 'текст / xml'

Я тестирую curl like

curl -vs http://domain.tld/form.php -d 'blocked'

Однако, когда я устанавливаю Content-Type: text / xml; правила не соответствуют; тестирование с

curl -vs http://domain.tld/form.php -H "Content-Type:text/xml" -d 'blocked'

Существует дополнительное правило, которое устанавливает REQBODY_PROCESSOR в XML, если в заголовках обнаружен тип содержимого «text / xml». Мне интересно посмотреть, как меняется политика соответствия с другим REQBODY_PROCESSOR, потому что, очевидно, когда REQBODY_PROCESSOR не является XML (когда Content-Type опущен; правила совпадают). Я попытался заставить другие параметры REQBODY_PROCESSOR заставить цепочку правил работать, но безуспешно.