Skip to content

Commit 77a885d

Browse files
author
Felipe Zimmerle
committed
Adds capture action to verifySSN
1 parent 60b2469 commit 77a885d

File tree

4 files changed

+61
-3
lines changed

4 files changed

+61
-3
lines changed

CHANGES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
v3.0.x - YYYY-MMM-DD (To be released)
22
-------------------------------------
33

4+
- Adds capture action to verifySSN
5+
[Issue #1698 - @zimmerle]
46
- Adds capture action to verifyCPF
57
[Issue #1698 - @zimmerle]
68
- Prettier error messages for unsupported configurations (UX)

Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ TESTS+=test/test-cases/regression/operator-rx.json
145145
TESTS+=test/test-cases/regression/operator-UnconditionalMatch.json
146146
TESTS+=test/test-cases/regression/operator-validate-byte-range.json
147147
TESTS+=test/test-cases/regression/operator-verifycpf.json
148+
TESTS+=test/test-cases/regression/operator-verifyssn.json
148149
TESTS+=test/test-cases/regression/request-body-parser-json.json
149150
TESTS+=test/test-cases/regression/request-body-parser-multipart-crlf.json
150151
TESTS+=test/test-cases/regression/request-body-parser-multipart.json

src/operators/verify_ssn.cc

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ bool VerifySSN::verify(const char *ssnumber, int len) {
108108
}
109109

110110

111-
bool VerifySSN::evaluate(Transaction *transaction, Rule *rule,
111+
bool VerifySSN::evaluate(Transaction *t, Rule *rule,
112112
const std::string& input, std::shared_ptr<RuleMessage> ruleMessage) {
113113
std::list<SMatch> matches;
114114
bool is_ssn = false;
@@ -120,11 +120,20 @@ bool VerifySSN::evaluate(Transaction *transaction, Rule *rule,
120120

121121
for (i = 0; i < input.size() - 1 && is_ssn == false; i++) {
122122
matches = m_re->searchAll(input.substr(i, input.size()));
123-
124123
for (const auto & i : matches) {
125124
is_ssn = verify(i.match.c_str(), i.match.size());
126-
logOffset(ruleMessage, i.m_offset, i.m_length);
127125
if (is_ssn) {
126+
logOffset(ruleMessage, i.m_offset, i.m_length);
127+
if (rule && t
128+
&& rule->getActionsByName("capture").size() > 0) {
129+
t->m_collections.m_tx_collection->storeOrUpdateFirst(
130+
"0", std::string(i.match));
131+
#ifndef NO_LOGS
132+
t->debug(7, "Added VerifySSN match TX.0: " + \
133+
std::string(i.match));
134+
#endif
135+
}
136+
128137
goto out;
129138
}
130139
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
[
2+
{
3+
"enabled":1,
4+
"version_min":300000,
5+
"title":"Testing Operator :: @verifycpf (1/2)",
6+
"client":{
7+
"ip":"200.249.12.31",
8+
"port":123
9+
},
10+
"server":{
11+
"ip":"200.249.12.31",
12+
"port":80
13+
},
14+
"request":{
15+
"headers":{
16+
"Host":"localhost",
17+
"User-Agent":"curl/7.38.0",
18+
"Accept":"*/*",
19+
"Content-Length": "27",
20+
"Content-Type": "application/x-www-form-urlencoded"
21+
},
22+
"uri":"/",
23+
"method":"POST",
24+
"body": [
25+
"param1=224-88-2046&param2=value2"
26+
]
27+
},
28+
"response":{
29+
"headers":{
30+
"Date":"Mon, 13 Jul 2015 20:02:41 GMT",
31+
"Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
32+
"Content-Type":"text/html"
33+
},
34+
"body":[
35+
"no need."
36+
]
37+
},
38+
"expected":{
39+
"debug_log":"Added VerifySSN match TX.0: 224-88-2046"
40+
},
41+
"rules":[
42+
"SecRuleEngine On",
43+
"SecRule ARGS \"@verifyssn \\d{3}-?\\d{2}-?\\d{4}\" \"id:1,phase:2,capture,pass,t:trim\""
44+
]
45+
}
46+
]

0 commit comments

Comments
 (0)