mod_security - So verarbeiten Sie Text/XML-Anforderungstext

mod_security - So verarbeiten Sie Text/XML-Anforderungstext

Ich versuche, REQUEST_BODY einer Webanforderung zu verarbeiten, die den Inhaltstyp „text/xml“ und etwas XML enthält. Angenommen, ich habe die folgende Anforderung:

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 

Ich muss in der Lage sein, REQUEST_BODY mit „SomeName“ oder „SomeValue“ als reine Textzeichenfolge abzugleichen.

Folgende Dinge habe ich bereits probiert:

1. Versuch einer Übereinstimmung mit Phase 2 mit folgenden Schlüsselwörtern:

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

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

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

2. Zusätzlich zu den oben genannten Regeln habe ich versucht, diese Regeln in verschiedenen Kombinationen zu aktivieren:

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

ODER

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

ODER

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

Wieder -ohne Erfolg.

Die eigentliche Frage:

Weiß jemand, wie man eine einfache Nur-Text-Zeichenfolge in REQUEST_BODY abgleicht, wenn meine Client-Anforderung vom Inhaltstyp „text/xml“ ist?

Außerdem möchte ich die XML-Engine, die mein XML analysieren kann, NICHT verwenden, da ich davon ausgehe, dass dies zu erheblichen Leistungseinbußen führt.

Antwort1

Schließlich habe ich die Antwort zum Abgleichen eines Klartextwerts im XML-Inhaltstyp gefunden. Hier ist das Beispiel:

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"

Dies bewirkt es:

  1. In „phase:1“ (REQUEST_HEADERS-Phase) wird abgeglichen, ob der Content-Type „text/xml:“ ist. Wenn ja, ändern Sie die Body-Verarbeitungs-Engine in „URL-CODED"

  2. In „phase:2“ (REQUEST_BODY-Phase) wird eine Übereinstimmung mit der Klartextzeichenfolge „eine_ungültige_Zeichenfolge" und blockieren Sie die Anfrage mit dem Statuscode: 500.

verwandte Informationen