Я пытаюсь создать правило, которое соответствовало бы определенному регулярному выражению в запросах 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 заставить цепочку правил работать, но безуспешно.