Forum Discussion
Block specific Client IP if request contains XYZ
For a very quick solution to match on a single source IP and URI, you could use the following:
when HTTP_REQUEST {
if { ( ( [IP::addr [IP::client_addr] equals X.X.X.X] ) && ( [string tolower [HTTP::uri]] contains "xyz" ) ) } {
drop
}
}
However, if you need need it to be more scalable, I would probably use a data group to hold multiple client IP addresses and then maybe another data group or switch -glob statement to match on multiple URIs.
I'd just advise to avoid using "string tolower" on HTTP uri instruction, since path is case sensitive.
- Apr 18, 2023
Good point 👍
- MaxMedovApr 18, 2023Cirrostratus
So what is better?
- CA_ValliApr 18, 2023MVP
[HTTP::path] or [HTTP::query] should work just fine for exact matches on path/query parts of the uri
- Apr 18, 2023
If you are using a mixture of upper and lowercase letters in your URI and you need an exact match on this, then remove the [string tolower]
when HTTP_REQUEST { if { ( ( [IP::addr [IP::client_addr] equals X.X.X.X] ) && ( [HTTP::uri] contains "XYZ" ) ) } { drop } }
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com