Skip to content

Commit a0ed362

Browse files
author
Esben Sparre Andreasen
committed
JS: add test case for js/incomplete-sanitization
1 parent 52d8ca0 commit a0ed362

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

javascript/ql/test/query-tests/Security/CWE-116/IncompleteSanitization/IncompleteSanitization.expected

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,19 @@
1515
| tst.js:61:10:61:18 | s.replace | This replaces only the first occurrence of "'" + "". |
1616
| tst.js:65:10:65:18 | s.replace | This replaces only the first occurrence of "'". |
1717
| tst.js:69:10:69:18 | s.replace | This replaces only the first occurrence of "'" + "". |
18+
| tst.js:130:2:130:10 | s.replace | This replaces only the first occurrence of '['. |
19+
| tst.js:130:2:130:27 | s.repla ... replace | This replaces only the first occurrence of ']'. |
20+
| tst.js:132:2:132:10 | s.replace | This replaces only the first occurrence of '{'. |
21+
| tst.js:132:2:132:27 | s.repla ... replace | This replaces only the first occurrence of '}'. |
22+
| tst.js:133:2:133:10 | s.replace | This replaces only the first occurrence of '<'. |
23+
| tst.js:133:2:133:27 | s.repla ... replace | This replaces only the first occurrence of '>'. |
24+
| tst.js:135:2:135:10 | s.replace | This replaces only the first occurrence of '['. |
25+
| tst.js:135:2:135:30 | s.repla ... replace | This replaces only the first occurrence of ']'. |
26+
| tst.js:136:2:136:10 | s.replace | This replaces only the first occurrence of '{'. |
27+
| tst.js:136:2:136:30 | s.repla ... replace | This replaces only the first occurrence of '}'. |
28+
| tst.js:138:6:138:14 | s.replace | This replaces only the first occurrence of '['. |
29+
| tst.js:139:6:139:14 | s.replace | This replaces only the first occurrence of ']'. |
30+
| tst.js:140:2:140:10 | s.replace | This replaces only the first occurrence of /{/. |
31+
| tst.js:140:2:140:27 | s.repla ... replace | This replaces only the first occurrence of /}/. |
32+
| tst.js:141:2:141:10 | s.replace | This replaces only the first occurrence of ']'. |
33+
| tst.js:141:2:141:27 | s.repla ... replace | This replaces only the first occurrence of '['. |

javascript/ql/test/query-tests/Security/CWE-116/IncompleteSanitization/tst.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,21 @@ function good11(s) {
126126
return s.replace("%d", "42");
127127
}
128128

129+
function good12(s) {
130+
s.replace('[', '').replace(']', ''); // OK
131+
s.replace('(', '').replace(')', ''); // OK
132+
s.replace('{', '').replace('}', ''); // OK
133+
s.replace('<', '').replace('>', ''); // NOT OK: too common as a bad HTML sanitizer
134+
135+
s.replace('[', '\\[').replace(']', '\\]'); // NOT OK
136+
s.replace('{', '\\{').replace('}', '\\}'); // NOT OK
137+
138+
s = s.replace('[', ''); // OK
139+
s = s.replace(']', ''); // OK
140+
s.replace(/{/, '').replace(/}/, ''); // NOT OK: should have used a string literal if a single replacement was intended
141+
s.replace(']', '').replace('[', ''); // probably OK, but still flagged
142+
}
143+
129144
app.get('/some/path', function(req, res) {
130145
let untrusted = req.param("p");
131146

@@ -162,4 +177,5 @@ app.get('/some/path', function(req, res) {
162177
good10(untrusted);
163178
flowifyComments(untrusted);
164179
good11(untrusted);
180+
good12(untrusted);
165181
});

0 commit comments

Comments
 (0)