Skip to content

Commit d55c68c

Browse files
committed
JS: Add test case with [(ngModel)]
1 parent 97f5559 commit d55c68c

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
edges
2-
| angular.ts:20:24:20:33 | form.value | angular.ts:20:24:20:37 | form.value.foo | provenance | |
2+
| angular.ts:23:24:23:33 | form.value | angular.ts:23:24:23:37 | form.value.foo | provenance | |
33
| forms.js:8:23:8:28 | values | forms.js:9:31:9:36 | values | provenance | |
44
| forms.js:9:31:9:36 | values | forms.js:9:31:9:40 | values.foo | provenance | |
55
| forms.js:11:24:11:29 | values | forms.js:12:31:12:36 | values | provenance | |
@@ -43,10 +43,10 @@ edges
4343
| xss-through-dom.js:154:25:154:27 | msg | xss-through-dom.js:155:27:155:29 | msg | provenance | |
4444
| xss-through-dom.js:159:34:159:52 | $("textarea").val() | xss-through-dom.js:154:25:154:27 | msg | provenance | |
4545
nodes
46-
| angular.ts:12:24:12:41 | event.target.value | semmle.label | event.target.value |
47-
| angular.ts:16:24:16:35 | target.value | semmle.label | target.value |
48-
| angular.ts:20:24:20:33 | form.value | semmle.label | form.value |
49-
| angular.ts:20:24:20:37 | form.value.foo | semmle.label | form.value.foo |
46+
| angular.ts:15:24:15:41 | event.target.value | semmle.label | event.target.value |
47+
| angular.ts:19:24:19:35 | target.value | semmle.label | target.value |
48+
| angular.ts:23:24:23:33 | form.value | semmle.label | form.value |
49+
| angular.ts:23:24:23:37 | form.value.foo | semmle.label | form.value.foo |
5050
| forms.js:8:23:8:28 | values | semmle.label | values |
5151
| forms.js:9:31:9:36 | values | semmle.label | values |
5252
| forms.js:9:31:9:40 | values.foo | semmle.label | values.foo |
@@ -129,9 +129,9 @@ nodes
129129
| xss-through-dom.js:159:34:159:52 | $("textarea").val() | semmle.label | $("textarea").val() |
130130
subpaths
131131
#select
132-
| 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 |
133-
| 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 |
134-
| 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 |
132+
| 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 |
133+
| 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 |
134+
| 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 |
135135
| 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 |
136136
| 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 |
137137
| 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)