Mod Security - тело запроса с xml

В безопасности мода для обнаружения и запуска действия для тела запроса используйте SecRule REQUEST_BODY: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#REQUEST_BODY, но при попытке проанализировать буфер действия Soap в теле XML не удается его обработать.

Содержит необработанное тело запроса. Эта переменная доступна только в том случае, если использовался обработчик тела запроса URLENCODED, что происходит по умолчанию при обнаружении типа контента application/x-www-form-urlencoded или если использование обработчика тела запроса URLENCODED было принудительным.

Я пробую это:

SecRuleEngine on
SecRequestBodyAccess On
SecRule REQUEST_HEADERS:Content-Type "text/xml" "id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML"
SecRule REQUEST_BODY "<password>\w{0,5}<\/password>" "id:77777771,log,deny,msg:'Week password'"

И в буфере сообщений:

POST / HTTP/1.1
...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 200

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <tns:authenticate xmlns:tns="http://.../">
      <password>abc</password>
      ...

Как определить тело ответа данных SOAP и отклонить значение выражения соответствия?


person e-info128    schedule 02.08.2016    source источник


Ответы (1)


Я нашел решение в https://serverfault.com/questions/727596/mod-security-how-to-process-text-xml-request-body

SecRequestBodyAccess On
SecRule REQUEST_HEADERS:Content-Type "text/xml" "phase:1,nolog,pass,ctl:requestBodyProcessor=URLENCODED,id:12345"
SecRule REQUEST_BODY "<password.*?>.{0,6}?</password>" "phase:2,t:none,deny,msg:'Very short password',status:403,auditlog,id:67890"
person e-info128    schedule 02.08.2016