mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-09-29 19:24:29 +03:00
Added URLENCODED_ERROR, which is raised when invalid URL encoding is encountered
This commit is contained in:
@@ -295,6 +295,10 @@ apr_status_t modsecurity_tx_init(modsec_rec *msr) {
|
||||
msr_log(msr, 1, "Initialisation: Error occurred while parsing QUERY_STRING arguments.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (invalid_count) {
|
||||
msr->urlencoded_error = 1;
|
||||
}
|
||||
}
|
||||
|
||||
msr->arguments_to_sanitize = apr_table_make(msr->mp, 16);
|
||||
|
@@ -258,6 +258,8 @@ struct modsec_rec {
|
||||
apr_table_t *response_headers_to_sanitize;
|
||||
apr_table_t *request_cookies;
|
||||
|
||||
unsigned int urlencoded_error;
|
||||
|
||||
unsigned int is_relevant;
|
||||
|
||||
apr_table_t *tx_vars;
|
||||
|
@@ -424,6 +424,10 @@ static apr_status_t modsecurity_request_body_end_urlencoded(modsec_rec *msr, cha
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (invalid_count) {
|
||||
msr->urlencoded_error = 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@@ -1414,6 +1414,18 @@ static int var_multipart_unmatched_boundary_generate(modsec_rec *msr, msre_var *
|
||||
}
|
||||
}
|
||||
|
||||
/* URLENCODED_ERROR */
|
||||
|
||||
static int var_urlencoded_error_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
|
||||
apr_table_t *vartab, apr_pool_t *mptmp)
|
||||
{
|
||||
if (msr->urlencoded_error) {
|
||||
return var_simple_generate(var, vartab, mptmp, "1");
|
||||
} else {
|
||||
return var_simple_generate(var, vartab, mptmp, "0");
|
||||
}
|
||||
}
|
||||
|
||||
/* TIME */
|
||||
|
||||
static int var_time_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
|
||||
@@ -2973,6 +2985,17 @@ void msre_engine_register_default_variables(msre_engine *engine) {
|
||||
PHASE_RESPONSE_HEADERS
|
||||
);
|
||||
|
||||
/* URLENCODED_ERROR */
|
||||
msre_engine_variable_register(engine,
|
||||
"URLENCODED_ERROR",
|
||||
VAR_SIMPLE,
|
||||
0, 0,
|
||||
NULL,
|
||||
var_urlencoded_error_generate,
|
||||
VAR_DONT_CACHE, /* flag */
|
||||
PHASE_REQUEST_HEADERS
|
||||
);
|
||||
|
||||
/* USER */
|
||||
msre_engine_variable_register(engine,
|
||||
"USER",
|
||||
|
Reference in New Issue
Block a user