mod_security – Come elaborare text / xml request_body

Sto provando a elaborare REQUEST_BODY di richiesta web, che contiene Content-Type: text / xml e alcuni XML all'interno di esso. Lasciate che ho la seguente richiesta:

curl -v -d " <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <value> <struct> <member> <name>SomeName</name> <value>SomeValue</value> </member> </struct> </value> </methodResponse> " -H "Content-Type:text/xml" http://gryzli.info/some_url.php 

Quello che mi occorre è poter abbinare il REQUEST_BODY a "SomeName" o "SomeValue" come string di text semplice.

Ho già provato le seguenti cose:

1. Tentare di corrispondere alla fase 2, con le seguenti parole chiave:

 SecRule REQUEST_BODY "SomeValue" "phase:2, ....." - No success SecRule FULL_REQUEST "SomeValue" "phase:2, ....." - No success SecRule ARGS "SomeValue" "phase:2, ....." - No success 

2. Oltre alle regole precedenti, ho cercato di triggersre queste regole in combinazioni diverse:

 SecRule REQUEST_HEADERS:Content-Type "text/xml" "phase:1,id:100000,t:lowercase,nolog,pass, ctl:requestBodyProcessor=MULTIPART" 

O

 SecRule REQUEST_HEADERS:Content-Type "text/xml" "phase:1,id:100000,t:lowercase,nolog,pass, ctl:requestBodyProcessor=URLENCODED" 

O

 SecRule REQUEST_HEADERS:Content-Type "text/xml" "phase:1,id:100000,t:lowercase,nolog,pass, ctl:forceRequestBodyVariable=On" 

Ancora una volta – senza successo .

La vera domanda:

Qualcuno sa come abbinare una string di text semplice all'interno di REQUEST_BODY quando la richiesta del mio cliente è di Content-Type: text / xml?

Inoltre preferisco NON utilizzare il motore XML, che può analizzare il mio XML, perché mi aspetto una pena di grande rendimento per farlo.

One Solution collect form web for “mod_security – Come elaborare text / xml request_body”

Infine, ho trovato la risposta per la corrispondenza di un valore chiaro in XML tipo di contenuto, ecco l'esempio:

 SecRequestBodyAccess On SecRule REQUEST_HEADERS:Content-Type "text/xml" "phase:1, nolog,pass,ctl:requestBodyProcessor=URLENCODED, id:2222" SecRule REQUEST_BODY "some_bad_string" "phase:2, t:none, deny,msg:'Matched some_bad_string', status:500,auditlog, id:3333" 

Ecco cosa fa:

  1. Nella fase "fase: 1" (fase REQUEST_HEADERS), corrisponde se il tipo di contenuto è "text / xml:". Se sì, quindi cambiare il motore di elaborazione del corpo in " URLENCODED "

  2. Nella fase "fase: 2" (fase REQUEST_BODY), corrisponde alla string in chiaro " some_bad_string " e blocca la richiesta con codice di stato: 500.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.