diff --git a/CHANGES b/CHANGES
index 4efae210..862ada9c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -5,7 +5,7 @@
* Added a @containsWord operator that will match a given string anywhere in
the target value, but only on word boundaries.
- * Used new TX:LAST_MATCHED_VAR_NAME to store the last matched variable name
+ * New MATCHED_VAR variable to store the last matched variable name
so that it can be more easily used by rules.
* Fixed expansion of macros when using relative changes with setvar. In
diff --git a/apache2/re.c b/apache2/re.c
index 150ae9b0..e043a002 100644
--- a/apache2/re.c
+++ b/apache2/re.c
@@ -1335,8 +1335,6 @@ static int execute_operator(msre_var *var, msre_rule *rule, modsec_rec *msr,
else {
/* Match. */
- msc_string *s = (msc_string *)apr_pcalloc(msr->mp, sizeof(msc_string));
-
if (rc == 0) {
/* Operator did not match so we need to provide a message. */
my_error_msg = apr_psprintf(msr->mp, "Match of \"%s %s\" against \"%s\" required.",
@@ -1346,21 +1344,6 @@ static int execute_operator(msre_var *var, msre_rule *rule, modsec_rec *msr,
msr->matched_var = apr_pstrdup(msr->mp, var->name);
- if (s == NULL) {
- msr_log(msr, 3, "Internal error: Failed to allocate space for TX.last_matched_var_name.");
- }
- else {
- s->name = "last_matched_var_name";
- s->value = apr_pstrdup(msr->mp, var->name);
- s->value_len = strlen(var->name);
- if ((s->name == NULL)||(s->value == NULL)) return -1;
- apr_table_setn(msr->tx_vars, s->name, (void *)s);
- if (msr->txcfg->debuglog_level >= 9) {
- msr_log(msr, 9, "Added matched variable name to TX.%s: %s", s->name, var->name);
- }
- }
-
-
/* Keep track of the highest severity matched so far */
if ((acting_actionset->severity > 0) && (acting_actionset->severity < msr->highest_severity))
{
diff --git a/apache2/re_variables.c b/apache2/re_variables.c
index 319ce69b..2b41c57b 100644
--- a/apache2/re_variables.c
+++ b/apache2/re_variables.c
@@ -838,6 +838,15 @@ static int var_ip_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
return count;
}
+/* MATCHED_VAR */
+
+static int var_matched_var_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
+ apr_table_t *vartab, apr_pool_t *mptmp)
+{
+ return var_simple_generate(var, vartab, mptmp,
+ apr_pstrdup(mptmp, msr->matched_var));
+}
+
/* SESSION */
static int var_session_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
@@ -2292,6 +2301,17 @@ void msre_engine_register_default_variables(msre_engine *engine) {
PHASE_REQUEST_HEADERS
);
+ /* MATCHED_VAR */
+ msre_engine_variable_register(engine,
+ "MATCHED_VAR",
+ VAR_SIMPLE,
+ 0, 0,
+ NULL,
+ var_matched_var_generate,
+ VAR_DONT_CACHE,
+ PHASE_REQUEST_HEADERS
+ );
+
/* MODSEC_BUILD */
msre_engine_variable_register(engine,
"MODSEC_BUILD",
diff --git a/doc/modsecurity2-apache-reference.xml b/doc/modsecurity2-apache-reference.xml
index 5f75673f..4302ee2a 100644
--- a/doc/modsecurity2-apache-reference.xml
+++ b/doc/modsecurity2-apache-reference.xml
@@ -2025,7 +2025,9 @@ SecRule REQUEST_HEADERS:Host "!^$" "deny,phase:1The following variables are supported in ModSecurity 2.x:
- ARGS
+
+ ARGS
+
ARGS is a collection and can be used on its own
(means all arguments including the POST Payload), with a static
@@ -2070,7 +2072,9 @@ SecRule REQUEST_HEADERS:Host "!^$" "deny,phase:1
- ARGS_COMBINED_SIZE
+
+ ARGS_COMBINED_SIZE
+
This variable allows you to set more targeted evaluations on the
total size of the Arguments as compared with normal Apache LimitRequest
@@ -2084,7 +2088,9 @@ SecRule ARGS_COMBINED_SIZE "@gt 25"
- ARGS_NAMES
+
+ ARGS_NAMES
+
Is a collection of the argument names. You can search for specific
argument names that you want to block. In a positive policy scenario,
@@ -2098,14 +2104,18 @@ SecRule ARGS_NAMES "!^(p|a)$"
- ARGS_GET
+
+ ARGS_GET
+
ARGS_GET is similar to ARGS,
but only contains arguments from the query string.
- ARGS_GET_NAMES
+
+ ARGS_GET_NAMES
+
ARGS_GET_NAMES is similar to
ARGS_NAMES, but only contains argument names from the
@@ -2113,7 +2123,9 @@ SecRule ARGS_NAMES "!^(p|a)$"
- ARGS_POST
+
+ ARGS_POST
+
ARGS_POST is similar to
ARGS, but only contains arguments from the POST
@@ -2121,7 +2133,9 @@ SecRule ARGS_NAMES "!^(p|a)$"
- ARGS_POST_NAMES
+
+ ARGS_POST_NAMES
+
ARGS_POST_NAMES is similar to
ARGS_NAMES, but only contains argument names from the
@@ -2129,14 +2143,18 @@ SecRule ARGS_NAMES "!^(p|a)$"
- AUTH_TYPE
+
+ AUTH_TYPE
+
This variable holds the authentication method used to validate a
user. Example:
SecRule AUTH_TYPE "basic" log,deny,status:403,phase:1,t:lowercase
- Note
+
+ Note
+
This data will not be available in a proxy-mode deployment as the
authentication is not local. In a proxy-mode deployment, you would need
@@ -2145,7 +2163,9 @@ SecRule ARGS_NAMES "!^(p|a)$"
- ENV
+
+ ENV
+
Collection, requires a single parameter (after a colon character).
The ENV variable is set with setenv and does not give access to the CGI
@@ -2157,7 +2177,9 @@ SecRule ENV:tag "suspicious"
- FILES
+
+ FILES
+
Collection. Contains a collection of original file names (as they
were called on the remote user's file system). Note: only available if
@@ -2167,7 +2189,9 @@ SecRule ENV:tag "suspicious"
- FILES_COMBINED_SIZE
+
+ FILES_COMBINED_SIZE
+
Single value. Total size of the uploaded files. Note: only
available if files were extracted from the request body. Example:
@@ -2176,7 +2200,9 @@ SecRule ENV:tag "suspicious"
- FILES_NAMES
+
+ FILES_NAMES
+
Collection w/o parameter. Contains a list of form fields that were
used for file upload. Note: only available if files were extracted from
@@ -2186,7 +2212,9 @@ SecRule ENV:tag "suspicious"
- FILES_SIZES
+
+ FILES_SIZES
+
Collection. Contains a list of file sizes. Useful for implementing
a size limitation on individual uploaded files. Note: only available if
@@ -2196,7 +2224,9 @@ SecRule ENV:tag "suspicious"
- FILES_TMPNAMES
+
+ FILES_TMPNAMES
+
Collection. Contains a collection of temporary files' names on the
disk. Useful when used together with ENV:tag "suspicious"
- GEO
+
+ GEO
+
GEO is a collection populated by the @geoLookups operator. It can be used to match
@@ -2281,7 +2313,9 @@ SecRule GEO:COUNTRY_CODE "!@streq UK"
- HIGHEST_SEVERITY
+
+ HIGHEST_SEVERITY
+
This variable holds the highest severity of any rules that have
matched so far. Severities are numeric values and thus can be used with
@@ -2298,7 +2332,22 @@ SecRule GEO:COUNTRY_CODE "!@streq UK"
- MODSEC_BUILD
+
+ MATCHED_VAR
+
+
+ This variable holds the full name of the variable that was matched
+ against.
+
+ SecRule ARGS pattern setvar:tx.mymatch=%{MATCHED_VAR}
+...
+SecRule TX:MYMATCH "@eq ARGS:param" deny
+
+
+
+
+ MODSEC_BUILD
+
This variable holds the ModSecurity build number. This variable is
intended to be used to check the build number prior to using a feature
@@ -2309,7 +2358,9 @@ SecRule ARGS "@pm some key words" deny,status:500
- MULTIPART_STRICT_ERROR
+
+ MULTIPART_STRICT_ERROR
+
MULTIPART_STRICT_ERROR will be set to
1 when any of the following variables is also set to
@@ -2356,7 +2407,9 @@ SM %{MULTIPART_SEMICOLON_MISSING}'"
- MULTIPART_UNMATCHED_BOUNDARY
+
+ MULTIPART_UNMATCHED_BOUNDARY
+
Set to 1 when, during the parsing phase of a
multipart/request-body, ModSecurity encounters what
@@ -2374,7 +2427,9 @@ SM %{MULTIPART_SEMICOLON_MISSING}'"
- PATH_INFO
+
+ PATH_INFO
+
Besides passing query information to a script/handler, you can
also pass additional data, known as extra path information, as part of
@@ -2384,7 +2439,9 @@ SM %{MULTIPART_SEMICOLON_MISSING}'"
- QUERY_STRING
+
+ QUERY_STRING
+
This variable holds form data passed to the script/handler by
appending data after a question mark. Warning: Not URL-decoded.
@@ -2394,7 +2451,9 @@ SM %{MULTIPART_SEMICOLON_MISSING}'"
- REMOTE_ADDR
+
+ REMOTE_ADDR
+
This variable holds the IP address of the remote client.
Example:
@@ -2403,7 +2462,9 @@ SM %{MULTIPART_SEMICOLON_MISSING}'"
- REMOTE_HOST
+
+ REMOTE_HOST
+
If HostnameLookUps are set to On, then this variable will hold the
DNS resolved remote host name. If it is set to Off, then it will hold
@@ -2415,7 +2476,9 @@ SM %{MULTIPART_SEMICOLON_MISSING}'"
- REMOTE_PORT
+
+ REMOTE_PORT
+
This variable holds information on the source port that the client
used when initiating the connection to our web server. Example: in this
@@ -2427,7 +2490,9 @@ SM %{MULTIPART_SEMICOLON_MISSING}'"
- REMOTE_USER
+
+ REMOTE_USER
+
This variable holds the username of the authenticated user. If
there are no password (basic|digest) access controls in place, then this
@@ -2435,14 +2500,18 @@ SM %{MULTIPART_SEMICOLON_MISSING}'"
SecRule REMOTE_USER "admin"
- Note
+
+ Note
+
This data will not be available in a proxy-mode deployment as the
authentication is not local.
- REQBODY_PROCESSOR
+
+ REQBODY_PROCESSOR
+
Built-in processors are URLENCODED,
@@ -2454,8 +2523,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQBODY_PROCESSOR_ERROR
+
+ REQBODY_PROCESSOR_ERROR
+
Possible values are 0 (no error) or 1 (error). This variable will
be set by request body processors (typically the
@@ -2480,8 +2550,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQBODY_PROCESSOR_ERROR_MSG
+
+ REQBODY_PROCESSOR_ERROR_MSG
+
Empty, or contains the error message from the processor.
Example:
@@ -2490,7 +2561,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_BASENAME
+
+ REQUEST_BASENAME
+
This variable holds just the filename part of
REQUEST_FILENAME (e.g. index.php). Warning: not
@@ -2500,7 +2573,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_BODY
+
+ REQUEST_BODY
+
This variable holds the data in the request body (including
POST_PAYLOAD data). REQUEST_BODY should be used if the original order of
@@ -2509,14 +2584,18 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
SecRule REQUEST_BODY "^username=\w{25,}\&password=\w{25,}\&Submit\=login$"
- Note
+
+ Note
+
This variable is only available if the content type is
application/x-www-form-urlencoded.
- REQUEST_COOKIES
+
+ REQUEST_COOKIES
+
This variable is a collection of all of the cookie data. Example:
the following example is using the Ampersand special operator to count
@@ -2527,7 +2606,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_COOKIES_NAMES
+
+ REQUEST_COOKIES_NAMES
+
This variable is a collection of the cookie names in the request
headers. Example: the following rule will trigger if the JSESSIONID
@@ -2537,7 +2618,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_FILENAME
+
+ REQUEST_FILENAME
+
This variable holds the relative REQUEST_URI minus the
QUERY_STRING part (e.g. /index.php). Example:
@@ -2546,7 +2629,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_HEADERS
+
+ REQUEST_HEADERS
+
This variable can be used as either a collection of all of the
Request Headers or can be used to specify indivudual headers (by using
@@ -2564,7 +2649,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_HEADERS_NAMES
+
+ REQUEST_HEADERS_NAMES
+
This variable is a collection of the names of all of the Request
Headers. Example:
@@ -2574,7 +2661,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_LINE
+
+ REQUEST_LINE
+
This variable holds the complete request line sent to the server
(including the REQUEST_METHOD and HTTP version data). Example: this
@@ -2584,7 +2673,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
SecRule REQUEST_LINE "!(^((?:(?:pos|ge)t|head))|http/(0\.9|1\.0|1\.1)$)"
- Note
+
+ Note
+
Due to the default action transformation function lowercase, the
regex strings should be in lowercase as well unless the t:none
@@ -2592,7 +2683,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_METHOD
+
+ REQUEST_METHOD
+
This variable holds the Request Method used by the client.
Example: the following example will trigger if the Request Method is
@@ -2600,7 +2693,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
SecRule REQUEST_METHOD "^((?:connect|trace))$"
- Note
+
+ Note
+
Due to the default action transformation function lowercase, the
regex strings should be in lowercase as well unless the t:none
@@ -2608,14 +2703,18 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_PROTOCOL
+
+ REQUEST_PROTOCOL
+
This variable holds the Request Protocol Version information.
Example:
SecRule REQUEST_PROTOCOL "!^http/(0\.9|1\.0|1\.1)$"
- Note
+
+ Note
+
Due to the default action transformation function lowercase, the
regex strings should be in lowercase as well unless the t:none
@@ -2623,7 +2722,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_URI
+
+ REQUEST_URI
+
This variable holds the full URL including the QUERY_STRING data
(e.g. /index.php?p=X), however it will never contain a domain name, even
@@ -2635,7 +2736,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- REQUEST_URI_RAW
+
+ REQUEST_URI_RAW
+
Same as REQUEST_URI but will contain the domain name if it was
provided on the request line (e.g.
@@ -2646,7 +2749,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- RESPONSE_BODY
+
+ RESPONSE_BODY
+
This variable holds the data for the response payload.
Example:
@@ -2655,7 +2760,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- RESPONSE_CONTENT_LENGTH
+
+ RESPONSE_CONTENT_LENGTH
+
Response body length in bytes. Can be available starting with
phase 3 but it does not have to be (as the length of response body is
@@ -2671,14 +2778,18 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- RESPONSE_CONTENT_TYPE
+
+ RESPONSE_CONTENT_TYPE
+
Response content type. Only available starting with phase
3.
- RESPONSE_HEADERS
+
+ RESPONSE_HEADERS
+
This variable is similar to the REQUEST_HEADERS variable and can
be used in the same manner. Example:
@@ -2686,7 +2797,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
SecRule RESPONSE_HEADERS:X-Cache "MISS"
- Note
+
+ Note
+
This variable may not have access to some headers when running in
embedded-mode. Headers such as Server, Date, Connection and Content-Type
@@ -2696,21 +2809,27 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- RESPONSE_HEADERS_NAMES
+
+ RESPONSE_HEADERS_NAMES
+
This variable is a collection of the response header names.
Example:
SecRule RESPONSE_HEADERS_NAMES "Set-Cookie"
- Note
+
+ Note
+
Same limitations as RESPONSE_HEADERS with regards to access to
some headers in embedded-mode.
- RESPONSE_PROTOCOL
+
+ RESPONSE_PROTOCOL
+
This variable holds the HTTP Response Protocol information.
Example:
@@ -2719,14 +2838,18 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- RESPONSE_STATUS
+
+ RESPONSE_STATUS
+
This variable holds the HTTP Response Status Code generated by
Apache. Example:
SecRule RESPONSE_STATUS "^[45]"
- Note
+
+ Note
+
This directive may not work as expected in embedded-mode as Apache
handles many of the stock response codes (404, 401, etc...) earlier in
@@ -2735,7 +2858,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- RULE
+
+ RULE
+
This variable provides access to the id, rev,
@@ -2750,59 +2875,77 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- SCRIPT_BASENAME
+
+ SCRIPT_BASENAME
+
This variable holds just the local filename part of
SCRIPT_FILENAME. Example:
SecRule SCRIPT_BASENAME "^login\.php$"
- Note
+
+ Note
+
This variable is not available in proxy mode.
- SCRIPT_FILENAME
+
+ SCRIPT_FILENAME
+
This variable holds the full path on the server to the requested
script. (e.g. SCRIPT_NAME plus the server path). Example:
SecRule SCRIPT_FILENAME "^/usr/local/apache/cgi-bin/login\.php$"
- Note
+
+ Note
+
This variable is not available in proxy mode.
- SCRIPT_GID
+
+ SCRIPT_GID
+
This variable holds the groupid (numerical value) of the group
owner of the script. Example:
SecRule SCRIPT_GID "!^46$"
- Note
+
+ Note
+
This variable is not available in proxy mode.
- SCRIPT_GROUPNAME
+
+ SCRIPT_GROUPNAME
+
This variable holds the group name of the group owner of the
script. Example:
SecRule SCRIPT_GROUPNAME "!^apache$"
- Note
+
+ Note
+
This variable is not available in proxy mode.
- SCRIPT_MODE
+
+ SCRIPT_MODE
+
This variable holds the script's permissions mode data (numerical
- 1=execute, 2=write, 4=read and 7=read/write/execute). Example: will
@@ -2810,13 +2953,17 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
SecRule SCRIPT_MODE "^(2|3|6|7)$"
- Note
+
+ Note
+
This variable is not available in proxy mode.
- SCRIPT_UID
+
+ SCRIPT_UID
+
This variable holds the userid (numerical value) of the owner of
the script. Example: the example rule below will trigger if the UID is
@@ -2824,26 +2971,34 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
SecRule SCRIPT_UID "!^46$"
- Note
+
+ Note
+
This variable is not available in proxy mode.
- SCRIPT_USERNAME
+
+ SCRIPT_USERNAME
+
This variable holds the username of the owner of the script.
Example:
SecRule SCRIPT_USERNAME "!^apache$"
- Note
+
+ Note
+
This variable is not available in proxy mode.
- SERVER_ADDR
+
+ SERVER_ADDR
+
This variable contains the IP address of the server.
Example:
@@ -2852,21 +3007,27 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- SERVER_NAME
+
+ SERVER_NAME
+
This variable contains the server's hostname or IP address.
Example:
SecRule SERVER_NAME "hostname\.com$"
- Note
+
+ Note
+
This data is taken from the Host header submitted in the client
request.
- SERVER_PORT
+
+ SERVER_PORT
+
This variable contains the local port that the web server is
listening on. Example:
@@ -2875,7 +3036,9 @@ SecRule XML "@validateDTD /opt/apache-frontend/conf/xml.dtd"
- SESSION
+
+ SESSION
+
This variable is a collection, available only after setsid is executed. Example: the following
@@ -2893,7 +3056,9 @@ SecRule SESSION:BLOCKED "@eq 1" "log,deny,statu
- SESSIONID
+
+ SESSIONID
+
This variable is the value set with setsid. Example:
@@ -2904,7 +3069,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME
+
+ TIME
+
This variable holds a formatted string representing the time
(hour:minute:second). Example:
@@ -2913,7 +3080,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME_DAY
+
+ TIME_DAY
+
This variable holds the current date (1-31). Example: this rule
would trigger anytime between the 10th and 20th days of the
@@ -2923,7 +3092,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME_EPOCH
+
+ TIME_EPOCH
+
This variable holds the time in seconds since 1970.
Example:
@@ -2932,7 +3103,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME_HOUR
+
+ TIME_HOUR
+
This variable holds the current hour (0-23). Example: this rule
would trigger during "off hours".
@@ -2941,7 +3114,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME_MIN
+
+ TIME_MIN
+
This variable holds the current minute (0-59). Example: this rule
would trigger during the last half hour of every hour.
@@ -2950,7 +3125,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME_MON
+
+ TIME_MON
+
This variable holds the current month (0-11). Example: this rule
would match if the month was either November (10) or December
@@ -2960,7 +3137,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME_SEC
+
+ TIME_SEC
+
This variable holds the current second count (0-59).
Example:
@@ -2969,7 +3148,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME_WDAY
+
+ TIME_WDAY
+
This variable holds the current weekday (0-6). Example: this rule
would trigger only on week-ends (Saturday and Sunday).
@@ -2978,7 +3159,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TIME_YEAR
+
+ TIME_YEAR
+
This variable holds the current four-digit year data.
Example:
@@ -2987,7 +3170,9 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
- TX
+
+ TX
+
Transaction Collection. This is used to store pieces of data,
create a transaction anomaly score, and so on. Transaction variables are
@@ -3015,11 +3200,6 @@ SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
moreinfo="none">@rx operator with capturing parens and the
capture action.
-
-
- TX:LAST_MATCHED_VAR_NAME -
- The full name of the variable that was matched against.
-
SecRule WEBSERVER_ERROR_LOG "does not exist" "phase:5,pass, TX:SCORE "@gt 20" deny,log
- USERID
+
+ USERID
+
This variable is the value set with setuid. Example:
@@ -3038,7 +3220,9 @@ SecRule USERID "Admin"
- WEBAPPID
+
+ WEBAPPID
+
This variable is the value set with SecWebAppId. Example:
@@ -3049,7 +3233,9 @@ SecRule REQUEST_HEADERS:Transfer-Encoding "!^$"
- WEBSERVER_ERROR_LOG
+
+ WEBSERVER_ERROR_LOG
+
Contains zero or more error messages produced by the web server.
Access to this variable is in phase:5 (logging). Example:
@@ -3058,7 +3244,9 @@ SecRule REQUEST_HEADERS:Transfer-Encoding "!^$"
- XML
+
+ XML
+
Can be used standalone (as a target for validateDTD and
validateSchema) or with an XPath expression parameter (which makes it a
@@ -3129,14 +3317,17 @@ SecRule XML:/xq:employees/employee/name/text()
- XPath
- Standard
+
+ XPath Standard
+
- XPath
- Tutorial
+
+ XPath
+ Tutorial
+