Skip to content

Commit b733934

Browse files
committed
JS: Add tests for EJS includes
1 parent b1cadc8 commit b733934

File tree

5 files changed

+29
-0
lines changed

5 files changed

+29
-0
lines changed

javascript/ql/test/library-tests/frameworks/Templating/Xss.expected

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ nodes
7777
| views/angularjs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
7878
| views/angularjs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
7979
| views/angularjs_sinks.ejs:4:13:4:19 | rawHtml |
80+
| views/ejs_include1.ejs:1:1:1:10 | <%- foo %> |
81+
| views/ejs_include1.ejs:1:1:1:10 | <%- foo %> |
82+
| views/ejs_include1.ejs:1:5:1:7 | foo |
83+
| views/ejs_include2.ejs:1:1:1:14 | <%- rawHtml %> |
84+
| views/ejs_include2.ejs:1:1:1:14 | <%- rawHtml %> |
85+
| views/ejs_include2.ejs:1:5:1:11 | rawHtml |
8086
| views/ejs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
8187
| views/ejs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
8288
| views/ejs_sinks.ejs:4:13:4:19 | rawHtml |
@@ -92,6 +98,7 @@ nodes
9298
| views/ejs_sinks.ejs:22:39:22:72 | <%- dataInEventHandlerStringRaw %> |
9399
| views/ejs_sinks.ejs:22:39:22:72 | <%- dataInEventHandlerStringRaw %> |
94100
| views/ejs_sinks.ejs:22:43:22:69 | dataInE ... ringRaw |
101+
| views/ejs_sinks.ejs:24:44:24:50 | rawHtml |
95102
| views/hbs_sinks.hbs:4:9:4:23 | {{{ rawHtml }}} |
96103
| views/hbs_sinks.hbs:4:9:4:23 | {{{ rawHtml }}} |
97104
| views/hbs_sinks.hbs:4:13:4:19 | rawHtml |
@@ -121,8 +128,12 @@ nodes
121128
| views/njk_sinks.njk:23:42:23:68 | dataInE ... ringRaw |
122129
| views/njk_sinks.njk:23:42:23:68 | dataInE ... ringRaw |
123130
edges
131+
| app.js:8:18:8:34 | req.query.rawHtml | views/ejs_include2.ejs:1:5:1:11 | rawHtml |
132+
| app.js:8:18:8:34 | req.query.rawHtml | views/ejs_include2.ejs:1:5:1:11 | rawHtml |
124133
| app.js:8:18:8:34 | req.query.rawHtml | views/ejs_sinks.ejs:4:13:4:19 | rawHtml |
125134
| app.js:8:18:8:34 | req.query.rawHtml | views/ejs_sinks.ejs:4:13:4:19 | rawHtml |
135+
| app.js:8:18:8:34 | req.query.rawHtml | views/ejs_sinks.ejs:24:44:24:50 | rawHtml |
136+
| app.js:8:18:8:34 | req.query.rawHtml | views/ejs_sinks.ejs:24:44:24:50 | rawHtml |
126137
| app.js:11:26:11:46 | req.que ... tmlProp | views/ejs_sinks.ejs:7:13:7:30 | object.rawHtmlProp |
127138
| app.js:11:26:11:46 | req.que ... tmlProp | views/ejs_sinks.ejs:7:13:7:30 | object.rawHtmlProp |
128139
| app.js:14:33:14:64 | req.que ... eralRaw | views/ejs_sinks.ejs:11:47:11:68 | dataInS ... eralRaw |
@@ -203,6 +214,10 @@ edges
203214
| views/angularjs_include.ejs:3:9:3:15 | rawHtml | views/angularjs_include.ejs:3:5:3:18 | <%- rawHtml %> |
204215
| views/angularjs_sinks.ejs:4:13:4:19 | rawHtml | views/angularjs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
205216
| views/angularjs_sinks.ejs:4:13:4:19 | rawHtml | views/angularjs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
217+
| views/ejs_include1.ejs:1:5:1:7 | foo | views/ejs_include1.ejs:1:1:1:10 | <%- foo %> |
218+
| views/ejs_include1.ejs:1:5:1:7 | foo | views/ejs_include1.ejs:1:1:1:10 | <%- foo %> |
219+
| views/ejs_include2.ejs:1:5:1:11 | rawHtml | views/ejs_include2.ejs:1:1:1:14 | <%- rawHtml %> |
220+
| views/ejs_include2.ejs:1:5:1:11 | rawHtml | views/ejs_include2.ejs:1:1:1:14 | <%- rawHtml %> |
206221
| views/ejs_sinks.ejs:4:13:4:19 | rawHtml | views/ejs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
207222
| views/ejs_sinks.ejs:4:13:4:19 | rawHtml | views/ejs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
208223
| views/ejs_sinks.ejs:7:13:7:30 | object.rawHtmlProp | views/ejs_sinks.ejs:7:9:7:33 | <%- object.rawHtmlProp %> |
@@ -213,6 +228,7 @@ edges
213228
| views/ejs_sinks.ejs:14:46:14:67 | dataInG ... CodeRaw | views/ejs_sinks.ejs:14:42:14:70 | <%- dataInGeneratedCodeRaw %> |
214229
| views/ejs_sinks.ejs:22:43:22:69 | dataInE ... ringRaw | views/ejs_sinks.ejs:22:39:22:72 | <%- dataInEventHandlerStringRaw %> |
215230
| views/ejs_sinks.ejs:22:43:22:69 | dataInE ... ringRaw | views/ejs_sinks.ejs:22:39:22:72 | <%- dataInEventHandlerStringRaw %> |
231+
| views/ejs_sinks.ejs:24:44:24:50 | rawHtml | views/ejs_include1.ejs:1:5:1:7 | foo |
216232
| views/hbs_sinks.hbs:4:13:4:19 | rawHtml | views/hbs_sinks.hbs:4:9:4:23 | {{{ rawHtml }}} |
217233
| views/hbs_sinks.hbs:4:13:4:19 | rawHtml | views/hbs_sinks.hbs:4:9:4:23 | {{{ rawHtml }}} |
218234
| views/hbs_sinks.hbs:7:13:7:30 | object.rawHtmlProp | views/hbs_sinks.hbs:7:9:7:34 | {{{ object.rawHtmlProp }}} |
@@ -238,6 +254,8 @@ edges
238254
| projectB/views/subfolder/other.ejs:3:1:3:12 | <%- sinkB %> | projectB/src/index.js:38:16:38:30 | req.query.sinkB | projectB/views/subfolder/other.ejs:3:1:3:12 | <%- sinkB %> | Cross-site scripting vulnerability due to $@. | projectB/src/index.js:38:16:38:30 | req.query.sinkB | user-provided value |
239255
| views/angularjs_include.ejs:3:5:3:18 | <%- rawHtml %> | app.js:66:18:66:34 | req.query.rawHtml | views/angularjs_include.ejs:3:5:3:18 | <%- rawHtml %> | Cross-site scripting vulnerability due to $@. | app.js:66:18:66:34 | req.query.rawHtml | user-provided value |
240256
| views/angularjs_sinks.ejs:4:9:4:22 | <%- rawHtml %> | app.js:66:18:66:34 | req.query.rawHtml | views/angularjs_sinks.ejs:4:9:4:22 | <%- rawHtml %> | Cross-site scripting vulnerability due to $@. | app.js:66:18:66:34 | req.query.rawHtml | user-provided value |
257+
| views/ejs_include1.ejs:1:1:1:10 | <%- foo %> | app.js:8:18:8:34 | req.query.rawHtml | views/ejs_include1.ejs:1:1:1:10 | <%- foo %> | Cross-site scripting vulnerability due to $@. | app.js:8:18:8:34 | req.query.rawHtml | user-provided value |
258+
| views/ejs_include2.ejs:1:1:1:14 | <%- rawHtml %> | app.js:8:18:8:34 | req.query.rawHtml | views/ejs_include2.ejs:1:1:1:14 | <%- rawHtml %> | Cross-site scripting vulnerability due to $@. | app.js:8:18:8:34 | req.query.rawHtml | user-provided value |
241259
| views/ejs_sinks.ejs:4:9:4:22 | <%- rawHtml %> | app.js:8:18:8:34 | req.query.rawHtml | views/ejs_sinks.ejs:4:9:4:22 | <%- rawHtml %> | Cross-site scripting vulnerability due to $@. | app.js:8:18:8:34 | req.query.rawHtml | user-provided value |
242260
| views/ejs_sinks.ejs:7:9:7:33 | <%- object.rawHtmlProp %> | app.js:11:26:11:46 | req.que ... tmlProp | views/ejs_sinks.ejs:7:9:7:33 | <%- object.rawHtmlProp %> | Cross-site scripting vulnerability due to $@. | app.js:11:26:11:46 | req.que ... tmlProp | user-provided value |
243261
| views/ejs_sinks.ejs:11:43:11:71 | <%- dataInStringLiteralRaw %> | app.js:14:33:14:64 | req.que ... eralRaw | views/ejs_sinks.ejs:11:43:11:71 | <%- dataInStringLiteralRaw %> | Cross-site scripting vulnerability due to $@. | app.js:14:33:14:64 | req.que ... eralRaw | user-provided value |

javascript/ql/test/library-tests/frameworks/Templating/test.expected

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ getLikelyTemplateSyntax
1010
| projectB/views/subfolder/other.ejs:0:0:0:0 | projectB/views/subfolder/other.ejs | ejs |
1111
| views/angularjs_include.ejs:0:0:0:0 | views/angularjs_include.ejs | ejs |
1212
| views/angularjs_sinks.ejs:0:0:0:0 | views/angularjs_sinks.ejs | ejs |
13+
| views/ejs_include1.ejs:0:0:0:0 | views/ejs_include1.ejs | ejs |
14+
| views/ejs_include2.ejs:0:0:0:0 | views/ejs_include2.ejs | ejs |
1315
| views/ejs_sinks.ejs:0:0:0:0 | views/ejs_sinks.ejs | ejs |
1416
| views/hbs_sinks.hbs:0:0:0:0 | views/hbs_sinks.hbs | mustache |
1517
| views/instantiated_as_ejs.html:0:0:0:0 | views/instantiated_as_ejs.html | ejs |
@@ -32,6 +34,7 @@ getTargetFile
3234
| projectB/src/index.js:16:5:19:6 | res.ren ... \\n }) | projectB/views/subfolder/index.ejs:0:0:0:0 | projectB/views/subfolder/index.ejs |
3335
| projectB/src/index.js:31:5:34:6 | res.ren ... \\n }) | projectB/views/subfolder/other.ejs:0:0:0:0 | projectB/views/subfolder/other.ejs |
3436
| projectB/src/index.js:36:5:39:6 | res.ren ... \\n }) | projectB/views/subfolder/other.ejs:0:0:0:0 | projectB/views/subfolder/other.ejs |
37+
| views/ejs_sinks.ejs:24:13:24:53 | include ... Html }) | views/ejs_include1.ejs:0:0:0:0 | views/ejs_include1.ejs |
3538
xssSink
3639
| projectA/views/main.ejs:2:1:2:12 | <%- sinkA %> |
3740
| projectA/views/subfolder/index.ejs:2:1:2:12 | <%- sinkA %> |
@@ -41,12 +44,15 @@ xssSink
4144
| projectB/views/subfolder/other.ejs:3:1:3:12 | <%- sinkB %> |
4245
| views/angularjs_include.ejs:3:5:3:18 | <%- rawHtml %> |
4346
| views/angularjs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
47+
| views/ejs_include1.ejs:1:1:1:10 | <%- foo %> |
48+
| views/ejs_include2.ejs:1:1:1:14 | <%- rawHtml %> |
4449
| views/ejs_sinks.ejs:4:9:4:22 | <%- rawHtml %> |
4550
| views/ejs_sinks.ejs:5:9:5:31 | <%- rawHtmlSafeValue %> |
4651
| views/ejs_sinks.ejs:7:9:7:33 | <%- object.rawHtmlProp %> |
4752
| views/ejs_sinks.ejs:11:43:11:71 | <%- dataInStringLiteralRaw %> |
4853
| views/ejs_sinks.ejs:14:42:14:70 | <%- dataInGeneratedCodeRaw %> |
4954
| views/ejs_sinks.ejs:22:39:22:72 | <%- dataInEventHandlerStringRaw %> |
55+
| views/ejs_sinks.ejs:24:9:24:57 | <%- include('ejs_include1', { foo: rawHtml }) _%> |
5056
| views/hbs_sinks.hbs:4:9:4:23 | {{{ rawHtml }}} |
5157
| views/hbs_sinks.hbs:5:9:5:32 | {{{ rawHtmlSafeValue }}} |
5258
| views/hbs_sinks.hbs:7:9:7:34 | {{{ object.rawHtmlProp }}} |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<%- foo %>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<%- rawHtml %>

javascript/ql/test/library-tests/frameworks/Templating/views/ejs_sinks.ejs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,8 @@
2020

2121
<button onclick="doSomething('<%= dataInEventHandlerString %>')">Click me</button>
2222
<button onclick="doSomething('<%- dataInEventHandlerStringRaw %>')">Click me</button>
23+
24+
<%- include('ejs_include1', { foo: rawHtml }) _%>
25+
<% include ejs_include2 %>
2326
</body>
2427
</html>

0 commit comments

Comments
 (0)