Nadat m'n webhost een upgrade uitvoerde naar versie 2 van de Apache module Mod_Security http://www.modsecurity.org/
kreeg ik bij het uitvoeren van een PHP zoekscriptje deze (HTTP 406) error in de browser:
"Not Acceptable
An appropriate representation of the requested resource could not be found on this server.
Apache/2.2.6 (Unix) mod_ssl/2.2.6 OpenSSL/0.9.7a mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_jk/1.2.25 mod_auth_passthrough/2.1"
Het logboek van de webserver gaf:
De webhost meldde nog dit:
De standaard oplossing om de module te omzeilen hielp niet.. het opnemen in de .htaccess van het volgende:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Op mijn verzoek werd de het te strak afgestelde mod_security filter 'less paranoid configured' waarna alles weer werkte.
Maar wat staat er nu fout in mijn PHP regel? Ik begrijp die pattern match niet. Klopt er iets niet met de Utf8 encoding en zo ja wat dan niet?
kreeg ik bij het uitvoeren van een PHP zoekscriptje deze (HTTP 406) error in de browser:
"Not Acceptable
An appropriate representation of the requested resource could not be found on this server.
Apache/2.2.6 (Unix) mod_ssl/2.2.6 OpenSSL/0.9.7a mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_jk/1.2.25 mod_auth_passthrough/2.1"
Het logboek van de webserver gaf:
code:
1
2
3
4
5
| [error]ModSecurity: Access denied with code 406 (phase 2). Pattern match "\\\\%(?![0-9a-fA-F]{2}|u[0-9a-fA-F]{4})" at ARGS:z_x5BNaam5D. [id "950107"] [msg "URL Encoding Abuse Attack Attempt"] [severity "WARNING"] [uri"/search/appzlist.php?a_search=E&z_x5BNaam5D=LIKE%2C%27%25%2C%25%27&x_x5BNaam5D=&z_x5BLijst5D=LIKE%2C%27%25%2C%25%27&x_x5BLijst5D=&psearch=audition&Submit=Zoek%A0%28*%29&psearchtype="] [unique_id "v4Z3yFUN71oAAEeQMZUAAAAR"] |
De webhost meldde nog dit:
code:
1
2
3
4
5
6
7
| The URL tripped the filter "950107"; # Check decodings # SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES|REQUEST_HEADERS|!REQUEST_HEADERS:Referer "@validateUrlEncoding" \ # "chain, deny,log,auditlog,msg:'URL Encoding Abuse Attack Attempt',id:'950107',severity:'4'" # SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES|REQUEST_HEADERS|!REQUEST_HEADERS:Referer "\%(?![0-9a-fA-F]{2}|u[0-9a-fA-F]{4})" # SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES|REQUEST_HEADERS|!REQUEST_HEADERS:Referer "@validateUtf8Encoding" "deny,log,auditlog,msg:'UTF8 Encoding Abuse Attack Attempt',id:'950801',severity:'4'" |
De standaard oplossing om de module te omzeilen hielp niet.. het opnemen in de .htaccess van het volgende:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Op mijn verzoek werd de het te strak afgestelde mod_security filter 'less paranoid configured' waarna alles weer werkte.
Maar wat staat er nu fout in mijn PHP regel? Ik begrijp die pattern match niet. Klopt er iets niet met de Utf8 encoding en zo ja wat dan niet?