Skip to content

Commit ec4245f

Browse files
committed
JS: Add test case with [(ngModel)]
1 parent caa48e8 commit ec4245f

File tree

2 files changed

+26
-19
lines changed

2 files changed

+26
-19
lines changed

javascript/ql/test/query-tests/Security/CWE-079/XssThroughDom/XssThroughDom.expected

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
nodes
2-
| angular.ts:12:24:12:41 | event.target.value |
3-
| angular.ts:12:24:12:41 | event.target.value |
4-
| angular.ts:12:24:12:41 | event.target.value |
5-
| angular.ts:16:24:16:35 | target.value |
6-
| angular.ts:16:24:16:35 | target.value |
7-
| angular.ts:16:24:16:35 | target.value |
8-
| angular.ts:20:24:20:33 | form.value |
9-
| angular.ts:20:24:20:33 | form.value |
10-
| angular.ts:20:24:20:37 | form.value.foo |
11-
| angular.ts:20:24:20:37 | form.value.foo |
2+
| angular.ts:15:24:15:41 | event.target.value |
3+
| angular.ts:15:24:15:41 | event.target.value |
4+
| angular.ts:15:24:15:41 | event.target.value |
5+
| angular.ts:19:24:19:35 | target.value |
6+
| angular.ts:19:24:19:35 | target.value |
7+
| angular.ts:19:24:19:35 | target.value |
8+
| angular.ts:23:24:23:33 | form.value |
9+
| angular.ts:23:24:23:33 | form.value |
10+
| angular.ts:23:24:23:37 | form.value.foo |
11+
| angular.ts:23:24:23:37 | form.value.foo |
1212
| forms.js:8:23:8:28 | values |
1313
| forms.js:8:23:8:28 | values |
1414
| forms.js:9:31:9:36 | values |
@@ -175,12 +175,12 @@ nodes
175175
| xss-through-dom.js:159:34:159:52 | $("textarea").val() |
176176
| xss-through-dom.js:159:34:159:52 | $("textarea").val() |
177177
edges
178-
| angular.ts:12:24:12:41 | event.target.value | angular.ts:12:24:12:41 | event.target.value |
179-
| angular.ts:16:24:16:35 | target.value | angular.ts:16:24:16:35 | target.value |
180-
| angular.ts:20:24:20:33 | form.value | angular.ts:20:24:20:37 | form.value.foo |
181-
| angular.ts:20:24:20:33 | form.value | angular.ts:20:24:20:37 | form.value.foo |
182-
| angular.ts:20:24:20:33 | form.value | angular.ts:20:24:20:37 | form.value.foo |
183-
| angular.ts:20:24:20:33 | form.value | angular.ts:20:24:20:37 | form.value.foo |
178+
| angular.ts:15:24:15:41 | event.target.value | angular.ts:15:24:15:41 | event.target.value |
179+
| angular.ts:19:24:19:35 | target.value | angular.ts:19:24:19:35 | target.value |
180+
| angular.ts:23:24:23:33 | form.value | angular.ts:23:24:23:37 | form.value.foo |
181+
| angular.ts:23:24:23:33 | form.value | angular.ts:23:24:23:37 | form.value.foo |
182+
| angular.ts:23:24:23:33 | form.value | angular.ts:23:24:23:37 | form.value.foo |
183+
| angular.ts:23:24:23:33 | form.value | angular.ts:23:24:23:37 | form.value.foo |
184184
| forms.js:8:23:8:28 | values | forms.js:9:31:9:36 | values |
185185
| forms.js:8:23:8:28 | values | forms.js:9:31:9:36 | values |
186186
| forms.js:9:31:9:36 | values | forms.js:9:31:9:40 | values.foo |
@@ -289,9 +289,9 @@ edges
289289
| xss-through-dom.js:159:34:159:52 | $("textarea").val() | xss-through-dom.js:154:25:154:27 | msg |
290290
| xss-through-dom.js:159:34:159:52 | $("textarea").val() | xss-through-dom.js:154:25:154:27 | msg |
291291
#select
292-
| angular.ts:12:24:12:41 | event.target.value | angular.ts:12:24:12:41 | event.target.value | angular.ts:12:24:12:41 | event.target.value | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:12:24:12:41 | event.target.value | DOM text |
293-
| angular.ts:16:24:16:35 | target.value | angular.ts:16:24:16:35 | target.value | angular.ts:16:24:16:35 | target.value | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:16:24:16:35 | target.value | DOM text |
294-
| angular.ts:20:24:20:37 | form.value.foo | angular.ts:20:24:20:33 | form.value | angular.ts:20:24:20:37 | form.value.foo | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:20:24:20:33 | form.value | DOM text |
292+
| angular.ts:15:24:15:41 | event.target.value | angular.ts:15:24:15:41 | event.target.value | angular.ts:15:24:15:41 | event.target.value | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:15:24:15:41 | event.target.value | DOM text |
293+
| angular.ts:19:24:19:35 | target.value | angular.ts:19:24:19:35 | target.value | angular.ts:19:24:19:35 | target.value | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:19:24:19:35 | target.value | DOM text |
294+
| angular.ts:23:24:23:37 | form.value.foo | angular.ts:23:24:23:33 | form.value | angular.ts:23:24:23:37 | form.value.foo | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:23:24:23:33 | form.value | DOM text |
295295
| forms.js:9:31:9:40 | values.foo | forms.js:8:23:8:28 | values | forms.js:9:31:9:40 | values.foo | $@ is reinterpreted as HTML without escaping meta-characters. | forms.js:8:23:8:28 | values | DOM text |
296296
| forms.js:12:31:12:40 | values.bar | forms.js:11:24:11:29 | values | forms.js:12:31:12:40 | values.bar | $@ is reinterpreted as HTML without escaping meta-characters. | forms.js:11:24:11:29 | values | DOM text |
297297
| forms.js:25:23:25:34 | values.email | forms.js:24:15:24:20 | values | forms.js:25:23:25:34 | values.email | $@ is reinterpreted as HTML without escaping meta-characters. | forms.js:24:15:24:20 | values | DOM text |

javascript/ql/test/query-tests/Security/CWE-079/XssThroughDom/angular.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@ import { NgForm } from "@angular/forms";
55
template: `
66
<input type="text" (input)="setInput1($event)"></input>
77
<input type="text" (input)="setInput2($event.target)"></input>
8+
<input type="text" [(ngModel)]="field"></input>
89
`
910
})
1011
export class Foo {
12+
field: string = "";
13+
1114
setInput1(event) {
1215
document.write(event.target.value); // NOT OK
1316
}
@@ -19,4 +22,8 @@ export class Foo {
1922
blah(form: NgForm) {
2023
document.write(form.value.foo); // NOT OK
2124
}
25+
26+
useField() {
27+
document.write(this.field); // NOT OK [INCONSISTENCY]
28+
}
2229
}

0 commit comments

Comments
 (0)