Skip to content

Commit e983e26

Browse files
committed
JS: Add example with safe field
1 parent 7b3727b commit e983e26

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
edges
2-
| angular.ts:12:5:12:23 | field: string = ""; | angular.ts:27:24:27:33 | this.field | provenance | |
3-
| angular.ts:23:24:23:33 | form.value | angular.ts:23:24:23:37 | form.value.foo | provenance | |
2+
| angular.ts:12:5:12:23 | field: string = ""; | angular.ts:28:24:28:33 | this.field | provenance | |
3+
| angular.ts:24:24:24:33 | form.value | angular.ts:24:24:24:37 | form.value.foo | provenance | |
44
| forms.js:8:23:8:28 | values | forms.js:9:31:9:36 | values | provenance | |
55
| forms.js:9:31:9:36 | values | forms.js:9:31:9:40 | values.foo | provenance | |
66
| forms.js:11:24:11:29 | values | forms.js:12:31:12:36 | values | provenance | |
@@ -45,11 +45,11 @@ edges
4545
| xss-through-dom.js:159:34:159:52 | $("textarea").val() | xss-through-dom.js:154:25:154:27 | msg | provenance | |
4646
nodes
4747
| angular.ts:12:5:12:23 | field: string = ""; | semmle.label | field: string = ""; |
48-
| angular.ts:15:24:15:41 | event.target.value | semmle.label | event.target.value |
49-
| angular.ts:19:24:19:35 | target.value | semmle.label | target.value |
50-
| angular.ts:23:24:23:33 | form.value | semmle.label | form.value |
51-
| angular.ts:23:24:23:37 | form.value.foo | semmle.label | form.value.foo |
52-
| angular.ts:27:24:27:33 | this.field | semmle.label | this.field |
48+
| angular.ts:16:24:16:41 | event.target.value | semmle.label | event.target.value |
49+
| angular.ts:20:24:20:35 | target.value | semmle.label | target.value |
50+
| angular.ts:24:24:24:33 | form.value | semmle.label | form.value |
51+
| angular.ts:24:24:24:37 | form.value.foo | semmle.label | form.value.foo |
52+
| angular.ts:28:24:28:33 | this.field | semmle.label | this.field |
5353
| forms.js:8:23:8:28 | values | semmle.label | values |
5454
| forms.js:9:31:9:36 | values | semmle.label | values |
5555
| forms.js:9:31:9:40 | values.foo | semmle.label | values.foo |
@@ -132,10 +132,10 @@ nodes
132132
| xss-through-dom.js:159:34:159:52 | $("textarea").val() | semmle.label | $("textarea").val() |
133133
subpaths
134134
#select
135-
| 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 |
136-
| 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 |
137-
| 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 |
138-
| angular.ts:27:24:27:33 | this.field | angular.ts:12:5:12:23 | field: string = ""; | angular.ts:27:24:27:33 | this.field | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:12:5:12:23 | field: string = ""; | DOM text |
135+
| angular.ts:16:24:16:41 | event.target.value | angular.ts:16:24:16:41 | event.target.value | angular.ts:16:24:16:41 | event.target.value | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:16:24:16:41 | event.target.value | DOM text |
136+
| angular.ts:20:24:20:35 | target.value | angular.ts:20:24:20:35 | target.value | angular.ts:20:24:20:35 | target.value | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:20:24:20:35 | target.value | DOM text |
137+
| angular.ts:24:24:24:37 | form.value.foo | angular.ts:24:24:24:33 | form.value | angular.ts:24:24:24:37 | form.value.foo | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:24:24:24:33 | form.value | DOM text |
138+
| angular.ts:28:24:28:33 | this.field | angular.ts:12:5:12:23 | field: string = ""; | angular.ts:28:24:28:33 | this.field | $@ is reinterpreted as HTML without escaping meta-characters. | angular.ts:12:5:12:23 | field: string = ""; | DOM text |
139139
| 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 |
140140
| 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 |
141141
| 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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { NgForm } from "@angular/forms";
1010
})
1111
export class Foo {
1212
field: string = "";
13+
safeField: string = "";
1314

1415
setInput1(event) {
1516
document.write(event.target.value); // NOT OK
@@ -25,5 +26,6 @@ export class Foo {
2526

2627
useField() {
2728
document.write(this.field); // NOT OK
29+
document.write(this.safeField); // OK
2830
}
2931
}

0 commit comments

Comments
 (0)