|
|
|
|
@@ -41,103 +41,99 @@ nodes
|
|
|
|
|
| TaintedPath.js:58:54:58:57 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:60:29:60:61 | pathMod ... h(path) | semmle.label | pathMod ... h(path) |
|
|
|
|
|
| TaintedPath.js:60:57:60:60 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:71:26:71:45 | Cookie.get("unsafe") | semmle.label | Cookie.get("unsafe") |
|
|
|
|
|
| TaintedPath.js:77:31:77:70 | require ... eq.url) | semmle.label | require ... eq.url) |
|
|
|
|
|
| TaintedPath.js:77:31:77:76 | require ... ).query | semmle.label | require ... ).query |
|
|
|
|
|
| TaintedPath.js:77:63:77:69 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:78:31:78:68 | require ... eq.url) | semmle.label | require ... eq.url) |
|
|
|
|
|
| TaintedPath.js:78:31:78:74 | require ... ).query | semmle.label | require ... ).query |
|
|
|
|
|
| TaintedPath.js:78:61:78:67 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:79:31:79:67 | require ... eq.url) | semmle.label | require ... eq.url) |
|
|
|
|
|
| TaintedPath.js:79:31:79:73 | require ... ).query | semmle.label | require ... ).query |
|
|
|
|
|
| TaintedPath.js:79:60:79:66 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:87:48:87:60 | req.params[0] | semmle.label | req.params[0] |
|
|
|
|
|
| TaintedPath.js:95:30:95:31 | ev | semmle.label | ev |
|
|
|
|
|
| TaintedPath.js:96:24:96:25 | ev | semmle.label | ev |
|
|
|
|
|
| TaintedPath.js:96:24:96:30 | ev.data | semmle.label | ev.data |
|
|
|
|
|
| TaintedPath.js:100:6:100:47 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:100:13:100:36 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:100:13:100:42 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:100:13:100:47 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:100:23:100:29 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:102:28:102:48 | fs.real ... c(path) | semmle.label | fs.real ... c(path) |
|
|
|
|
|
| TaintedPath.js:102:44:102:47 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:103:14:103:17 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:104:32:104:39 | realpath | semmle.label | realpath |
|
|
|
|
|
| TaintedPath.js:105:45:105:52 | realpath | semmle.label | realpath |
|
|
|
|
|
| TaintedPath.js:136:6:136:47 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:136:13:136:36 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:136:13:136:42 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:136:13:136:47 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:136:23:136:29 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:138:23:138:26 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:142:7:142:48 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:142:14:142:37 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:142:14:142:43 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:142:14:142:48 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:142:24:142:30 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:144:19:144:22 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:146:7:146:29 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:146:15:146:18 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:146:15:146:29 | path.split("/") | semmle.label | path.split("/") |
|
|
|
|
|
| TaintedPath.js:148:19:148:23 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:148:19:148:33 | split.join("/") | semmle.label | split.join("/") |
|
|
|
|
|
| TaintedPath.js:152:19:152:23 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:152:19:152:26 | split[x] | semmle.label | split[x] |
|
|
|
|
|
| TaintedPath.js:153:19:153:35 | prefix + split[x] | semmle.label | prefix + split[x] |
|
|
|
|
|
| TaintedPath.js:153:28:153:32 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:153:28:153:35 | split[x] | semmle.label | split[x] |
|
|
|
|
|
| TaintedPath.js:155:7:155:38 | concatted | semmle.label | concatted |
|
|
|
|
|
| TaintedPath.js:155:19:155:38 | prefix.concat(split) | semmle.label | prefix.concat(split) |
|
|
|
|
|
| TaintedPath.js:155:33:155:37 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:156:19:156:27 | concatted | semmle.label | concatted |
|
|
|
|
|
| TaintedPath.js:156:19:156:37 | concatted.join("/") | semmle.label | concatted.join("/") |
|
|
|
|
|
| TaintedPath.js:158:7:158:39 | concatted2 | semmle.label | concatted2 |
|
|
|
|
|
| TaintedPath.js:158:20:158:24 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:158:20:158:39 | split.concat(prefix) | semmle.label | split.concat(prefix) |
|
|
|
|
|
| TaintedPath.js:159:19:159:28 | concatted2 | semmle.label | concatted2 |
|
|
|
|
|
| TaintedPath.js:159:19:159:38 | concatted2.join("/") | semmle.label | concatted2.join("/") |
|
|
|
|
|
| TaintedPath.js:161:19:161:23 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:161:19:161:29 | split.pop() | semmle.label | split.pop() |
|
|
|
|
|
| TaintedPath.js:166:7:166:48 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:166:14:166:37 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:166:14:166:43 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:166:14:166:48 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:166:24:166:30 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:170:29:170:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:170:29:170:55 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:176:29:176:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:176:29:176:52 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:177:29:177:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:177:29:177:53 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:178:29:178:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:178:29:178:51 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:179:29:179:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:179:29:179:57 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:194:29:194:73 | "prefix ... +/, '') | semmle.label | "prefix ... +/, '') |
|
|
|
|
|
| TaintedPath.js:194:40:194:43 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:194:40:194:73 | path.re ... +/, '') | semmle.label | path.re ... +/, '') |
|
|
|
|
|
| TaintedPath.js:195:29:195:54 | pathMod ... e(path) | semmle.label | pathMod ... e(path) |
|
|
|
|
|
| TaintedPath.js:195:29:195:84 | pathMod ... +/, '') | semmle.label | pathMod ... +/, '') |
|
|
|
|
|
| TaintedPath.js:195:50:195:53 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:203:29:203:45 | qs.parse(req.url) | semmle.label | qs.parse(req.url) |
|
|
|
|
|
| TaintedPath.js:203:29:203:49 | qs.pars ... rl).foo | semmle.label | qs.pars ... rl).foo |
|
|
|
|
|
| TaintedPath.js:203:38:203:44 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:204:29:204:59 | qs.pars ... q.url)) | semmle.label | qs.pars ... q.url)) |
|
|
|
|
|
| TaintedPath.js:204:29:204:63 | qs.pars ... l)).foo | semmle.label | qs.pars ... l)).foo |
|
|
|
|
|
| TaintedPath.js:204:38:204:58 | normali ... eq.url) | semmle.label | normali ... eq.url) |
|
|
|
|
|
| TaintedPath.js:204:51:204:57 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:206:29:206:51 | parseqs ... eq.url) | semmle.label | parseqs ... eq.url) |
|
|
|
|
|
| TaintedPath.js:206:29:206:55 | parseqs ... rl).foo | semmle.label | parseqs ... rl).foo |
|
|
|
|
|
| TaintedPath.js:206:44:206:50 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:211:7:211:48 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:211:14:211:37 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:211:14:211:43 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:211:14:211:48 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:211:24:211:30 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:212:31:212:34 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:213:45:213:48 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:214:35:214:38 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:65:31:65:70 | require ... eq.url) | semmle.label | require ... eq.url) |
|
|
|
|
|
| TaintedPath.js:65:31:65:76 | require ... ).query | semmle.label | require ... ).query |
|
|
|
|
|
| TaintedPath.js:65:63:65:69 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:66:31:66:68 | require ... eq.url) | semmle.label | require ... eq.url) |
|
|
|
|
|
| TaintedPath.js:66:31:66:74 | require ... ).query | semmle.label | require ... ).query |
|
|
|
|
|
| TaintedPath.js:66:61:66:67 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:67:31:67:67 | require ... eq.url) | semmle.label | require ... eq.url) |
|
|
|
|
|
| TaintedPath.js:67:31:67:73 | require ... ).query | semmle.label | require ... ).query |
|
|
|
|
|
| TaintedPath.js:67:60:67:66 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:75:48:75:60 | req.params[0] | semmle.label | req.params[0] |
|
|
|
|
|
| TaintedPath.js:84:6:84:47 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:84:13:84:36 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:84:13:84:42 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:84:13:84:47 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:84:23:84:29 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:86:28:86:48 | fs.real ... c(path) | semmle.label | fs.real ... c(path) |
|
|
|
|
|
| TaintedPath.js:86:44:86:47 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:87:14:87:17 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:88:32:88:39 | realpath | semmle.label | realpath |
|
|
|
|
|
| TaintedPath.js:89:45:89:52 | realpath | semmle.label | realpath |
|
|
|
|
|
| TaintedPath.js:120:6:120:47 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:120:13:120:36 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:120:13:120:42 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:120:13:120:47 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:120:23:120:29 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:122:23:122:26 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:126:7:126:48 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:126:14:126:37 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:126:14:126:43 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:126:14:126:48 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:126:24:126:30 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:128:19:128:22 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:130:7:130:29 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:130:15:130:18 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:130:15:130:29 | path.split("/") | semmle.label | path.split("/") |
|
|
|
|
|
| TaintedPath.js:132:19:132:23 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:132:19:132:33 | split.join("/") | semmle.label | split.join("/") |
|
|
|
|
|
| TaintedPath.js:136:19:136:23 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:136:19:136:26 | split[x] | semmle.label | split[x] |
|
|
|
|
|
| TaintedPath.js:137:19:137:35 | prefix + split[x] | semmle.label | prefix + split[x] |
|
|
|
|
|
| TaintedPath.js:137:28:137:32 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:137:28:137:35 | split[x] | semmle.label | split[x] |
|
|
|
|
|
| TaintedPath.js:139:7:139:38 | concatted | semmle.label | concatted |
|
|
|
|
|
| TaintedPath.js:139:19:139:38 | prefix.concat(split) | semmle.label | prefix.concat(split) |
|
|
|
|
|
| TaintedPath.js:139:33:139:37 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:140:19:140:27 | concatted | semmle.label | concatted |
|
|
|
|
|
| TaintedPath.js:140:19:140:37 | concatted.join("/") | semmle.label | concatted.join("/") |
|
|
|
|
|
| TaintedPath.js:142:7:142:39 | concatted2 | semmle.label | concatted2 |
|
|
|
|
|
| TaintedPath.js:142:20:142:24 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:142:20:142:39 | split.concat(prefix) | semmle.label | split.concat(prefix) |
|
|
|
|
|
| TaintedPath.js:143:19:143:28 | concatted2 | semmle.label | concatted2 |
|
|
|
|
|
| TaintedPath.js:143:19:143:38 | concatted2.join("/") | semmle.label | concatted2.join("/") |
|
|
|
|
|
| TaintedPath.js:145:19:145:23 | split | semmle.label | split |
|
|
|
|
|
| TaintedPath.js:145:19:145:29 | split.pop() | semmle.label | split.pop() |
|
|
|
|
|
| TaintedPath.js:150:7:150:48 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:150:14:150:37 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:150:14:150:43 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:150:14:150:48 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:150:24:150:30 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:154:29:154:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:154:29:154:55 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:160:29:160:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:160:29:160:52 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:161:29:161:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:161:29:161:53 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:162:29:162:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:162:29:162:51 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:163:29:163:32 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:163:29:163:57 | path.re ... /g, '') | semmle.label | path.re ... /g, '') |
|
|
|
|
|
| TaintedPath.js:178:29:178:73 | "prefix ... +/, '') | semmle.label | "prefix ... +/, '') |
|
|
|
|
|
| TaintedPath.js:178:40:178:43 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:178:40:178:73 | path.re ... +/, '') | semmle.label | path.re ... +/, '') |
|
|
|
|
|
| TaintedPath.js:179:29:179:54 | pathMod ... e(path) | semmle.label | pathMod ... e(path) |
|
|
|
|
|
| TaintedPath.js:179:29:179:84 | pathMod ... +/, '') | semmle.label | pathMod ... +/, '') |
|
|
|
|
|
| TaintedPath.js:179:50:179:53 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:187:29:187:45 | qs.parse(req.url) | semmle.label | qs.parse(req.url) |
|
|
|
|
|
| TaintedPath.js:187:29:187:49 | qs.pars ... rl).foo | semmle.label | qs.pars ... rl).foo |
|
|
|
|
|
| TaintedPath.js:187:38:187:44 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:188:29:188:59 | qs.pars ... q.url)) | semmle.label | qs.pars ... q.url)) |
|
|
|
|
|
| TaintedPath.js:188:29:188:63 | qs.pars ... l)).foo | semmle.label | qs.pars ... l)).foo |
|
|
|
|
|
| TaintedPath.js:188:38:188:58 | normali ... eq.url) | semmle.label | normali ... eq.url) |
|
|
|
|
|
| TaintedPath.js:188:51:188:57 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:190:29:190:51 | parseqs ... eq.url) | semmle.label | parseqs ... eq.url) |
|
|
|
|
|
| TaintedPath.js:190:29:190:55 | parseqs ... rl).foo | semmle.label | parseqs ... rl).foo |
|
|
|
|
|
| TaintedPath.js:190:44:190:50 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:195:7:195:48 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:195:14:195:37 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| TaintedPath.js:195:14:195:43 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
| TaintedPath.js:195:14:195:48 | url.par ... ry.path | semmle.label | url.par ... ry.path |
|
|
|
|
|
| TaintedPath.js:195:24:195:30 | req.url | semmle.label | req.url |
|
|
|
|
|
| TaintedPath.js:196:31:196:34 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:197:45:197:48 | path | semmle.label | path |
|
|
|
|
|
| TaintedPath.js:198:35:198:38 | path | semmle.label | path |
|
|
|
|
|
| examples/TaintedPath.js:8:7:8:52 | filePath | semmle.label | filePath |
|
|
|
|
|
| examples/TaintedPath.js:8:18:8:41 | url.par ... , true) | semmle.label | url.par ... , true) |
|
|
|
|
|
| examples/TaintedPath.js:8:18:8:47 | url.par ... ).query | semmle.label | url.par ... ).query |
|
|
|
|
|
@@ -532,90 +528,87 @@ edges
|
|
|
|
|
| TaintedPath.js:56:48:56:51 | path | TaintedPath.js:56:29:56:52 | pathMod ... e(path) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:58:54:58:57 | path | TaintedPath.js:58:29:58:61 | pathMod ... ath, z) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:60:57:60:60 | path | TaintedPath.js:60:29:60:61 | pathMod ... h(path) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:77:31:77:70 | require ... eq.url) | TaintedPath.js:77:31:77:76 | require ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:77:63:77:69 | req.url | TaintedPath.js:77:31:77:70 | require ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:78:31:78:68 | require ... eq.url) | TaintedPath.js:78:31:78:74 | require ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:78:61:78:67 | req.url | TaintedPath.js:78:31:78:68 | require ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:79:31:79:67 | require ... eq.url) | TaintedPath.js:79:31:79:73 | require ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:79:60:79:66 | req.url | TaintedPath.js:79:31:79:67 | require ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:95:30:95:31 | ev | TaintedPath.js:96:24:96:25 | ev | provenance | |
|
|
|
|
|
| TaintedPath.js:96:24:96:25 | ev | TaintedPath.js:96:24:96:30 | ev.data | provenance | Config |
|
|
|
|
|
| TaintedPath.js:96:24:96:30 | ev.data | TaintedPath.js:71:26:71:45 | Cookie.get("unsafe") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:100:6:100:47 | path | TaintedPath.js:102:44:102:47 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:100:6:100:47 | path | TaintedPath.js:103:14:103:17 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:100:13:100:36 | url.par ... , true) | TaintedPath.js:100:13:100:42 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:100:13:100:42 | url.par ... ).query | TaintedPath.js:100:13:100:47 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:100:13:100:47 | url.par ... ry.path | TaintedPath.js:100:6:100:47 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:100:23:100:29 | req.url | TaintedPath.js:100:13:100:36 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:102:44:102:47 | path | TaintedPath.js:102:28:102:48 | fs.real ... c(path) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:103:14:103:17 | path | TaintedPath.js:104:32:104:39 | realpath | provenance | Config |
|
|
|
|
|
| TaintedPath.js:104:32:104:39 | realpath | TaintedPath.js:105:45:105:52 | realpath | provenance | |
|
|
|
|
|
| TaintedPath.js:136:6:136:47 | path | TaintedPath.js:138:23:138:26 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:136:13:136:36 | url.par ... , true) | TaintedPath.js:136:13:136:42 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:136:13:136:42 | url.par ... ).query | TaintedPath.js:136:13:136:47 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:136:13:136:47 | url.par ... ry.path | TaintedPath.js:136:6:136:47 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:136:23:136:29 | req.url | TaintedPath.js:136:13:136:36 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:142:7:142:48 | path | TaintedPath.js:144:19:144:22 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:142:7:142:48 | path | TaintedPath.js:146:15:146:18 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:142:14:142:37 | url.par ... , true) | TaintedPath.js:142:14:142:43 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:142:14:142:43 | url.par ... ).query | TaintedPath.js:142:14:142:48 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:142:14:142:48 | url.par ... ry.path | TaintedPath.js:142:7:142:48 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:142:24:142:30 | req.url | TaintedPath.js:142:14:142:37 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:146:7:146:29 | split | TaintedPath.js:148:19:148:23 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:146:7:146:29 | split | TaintedPath.js:152:19:152:23 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:146:7:146:29 | split | TaintedPath.js:153:28:153:32 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:146:7:146:29 | split | TaintedPath.js:155:33:155:37 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:146:7:146:29 | split | TaintedPath.js:158:20:158:24 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:146:7:146:29 | split | TaintedPath.js:161:19:161:23 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:146:15:146:18 | path | TaintedPath.js:146:15:146:29 | path.split("/") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:146:15:146:29 | path.split("/") | TaintedPath.js:146:7:146:29 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:148:19:148:23 | split | TaintedPath.js:148:19:148:33 | split.join("/") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:152:19:152:23 | split | TaintedPath.js:152:19:152:26 | split[x] | provenance | Config |
|
|
|
|
|
| TaintedPath.js:153:28:153:32 | split | TaintedPath.js:153:28:153:35 | split[x] | provenance | Config |
|
|
|
|
|
| TaintedPath.js:153:28:153:35 | split[x] | TaintedPath.js:153:19:153:35 | prefix + split[x] | provenance | Config |
|
|
|
|
|
| TaintedPath.js:155:7:155:38 | concatted | TaintedPath.js:156:19:156:27 | concatted | provenance | |
|
|
|
|
|
| TaintedPath.js:155:19:155:38 | prefix.concat(split) | TaintedPath.js:155:7:155:38 | concatted | provenance | |
|
|
|
|
|
| TaintedPath.js:155:33:155:37 | split | TaintedPath.js:155:19:155:38 | prefix.concat(split) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:156:19:156:27 | concatted | TaintedPath.js:156:19:156:37 | concatted.join("/") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:158:7:158:39 | concatted2 | TaintedPath.js:159:19:159:28 | concatted2 | provenance | |
|
|
|
|
|
| TaintedPath.js:158:20:158:24 | split | TaintedPath.js:158:20:158:39 | split.concat(prefix) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:158:20:158:39 | split.concat(prefix) | TaintedPath.js:158:7:158:39 | concatted2 | provenance | |
|
|
|
|
|
| TaintedPath.js:159:19:159:28 | concatted2 | TaintedPath.js:159:19:159:38 | concatted2.join("/") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:161:19:161:23 | split | TaintedPath.js:161:19:161:29 | split.pop() | provenance | Config |
|
|
|
|
|
| TaintedPath.js:166:7:166:48 | path | TaintedPath.js:170:29:170:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:166:7:166:48 | path | TaintedPath.js:176:29:176:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:166:7:166:48 | path | TaintedPath.js:177:29:177:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:166:7:166:48 | path | TaintedPath.js:178:29:178:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:166:7:166:48 | path | TaintedPath.js:179:29:179:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:166:7:166:48 | path | TaintedPath.js:194:40:194:43 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:166:7:166:48 | path | TaintedPath.js:195:50:195:53 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:166:14:166:37 | url.par ... , true) | TaintedPath.js:166:14:166:43 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:166:14:166:43 | url.par ... ).query | TaintedPath.js:166:14:166:48 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:166:14:166:48 | url.par ... ry.path | TaintedPath.js:166:7:166:48 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:166:24:166:30 | req.url | TaintedPath.js:166:14:166:37 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:170:29:170:32 | path | TaintedPath.js:170:29:170:55 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:176:29:176:32 | path | TaintedPath.js:176:29:176:52 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:177:29:177:32 | path | TaintedPath.js:177:29:177:53 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:178:29:178:32 | path | TaintedPath.js:178:29:178:51 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:179:29:179:32 | path | TaintedPath.js:179:29:179:57 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:194:40:194:43 | path | TaintedPath.js:194:40:194:73 | path.re ... +/, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:194:40:194:73 | path.re ... +/, '') | TaintedPath.js:194:29:194:73 | "prefix ... +/, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:195:29:195:54 | pathMod ... e(path) | TaintedPath.js:195:29:195:84 | pathMod ... +/, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:195:50:195:53 | path | TaintedPath.js:195:29:195:54 | pathMod ... e(path) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:203:29:203:45 | qs.parse(req.url) | TaintedPath.js:203:29:203:49 | qs.pars ... rl).foo | provenance | Config |
|
|
|
|
|
| TaintedPath.js:203:38:203:44 | req.url | TaintedPath.js:203:29:203:45 | qs.parse(req.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:204:29:204:59 | qs.pars ... q.url)) | TaintedPath.js:204:29:204:63 | qs.pars ... l)).foo | provenance | Config |
|
|
|
|
|
| TaintedPath.js:204:38:204:58 | normali ... eq.url) | TaintedPath.js:204:29:204:59 | qs.pars ... q.url)) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:204:51:204:57 | req.url | TaintedPath.js:204:38:204:58 | normali ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:206:29:206:51 | parseqs ... eq.url) | TaintedPath.js:206:29:206:55 | parseqs ... rl).foo | provenance | Config |
|
|
|
|
|
| TaintedPath.js:206:44:206:50 | req.url | TaintedPath.js:206:29:206:51 | parseqs ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:211:7:211:48 | path | TaintedPath.js:212:31:212:34 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:211:7:211:48 | path | TaintedPath.js:213:45:213:48 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:211:7:211:48 | path | TaintedPath.js:214:35:214:38 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:211:14:211:37 | url.par ... , true) | TaintedPath.js:211:14:211:43 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:211:14:211:43 | url.par ... ).query | TaintedPath.js:211:14:211:48 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:211:14:211:48 | url.par ... ry.path | TaintedPath.js:211:7:211:48 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:211:24:211:30 | req.url | TaintedPath.js:211:14:211:37 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:65:31:65:70 | require ... eq.url) | TaintedPath.js:65:31:65:76 | require ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:65:63:65:69 | req.url | TaintedPath.js:65:31:65:70 | require ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:66:31:66:68 | require ... eq.url) | TaintedPath.js:66:31:66:74 | require ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:66:61:66:67 | req.url | TaintedPath.js:66:31:66:68 | require ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:67:31:67:67 | require ... eq.url) | TaintedPath.js:67:31:67:73 | require ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:67:60:67:66 | req.url | TaintedPath.js:67:31:67:67 | require ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:84:6:84:47 | path | TaintedPath.js:86:44:86:47 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:84:6:84:47 | path | TaintedPath.js:87:14:87:17 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:84:13:84:36 | url.par ... , true) | TaintedPath.js:84:13:84:42 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:84:13:84:42 | url.par ... ).query | TaintedPath.js:84:13:84:47 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:84:13:84:47 | url.par ... ry.path | TaintedPath.js:84:6:84:47 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:84:23:84:29 | req.url | TaintedPath.js:84:13:84:36 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:86:44:86:47 | path | TaintedPath.js:86:28:86:48 | fs.real ... c(path) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:87:14:87:17 | path | TaintedPath.js:88:32:88:39 | realpath | provenance | Config |
|
|
|
|
|
| TaintedPath.js:88:32:88:39 | realpath | TaintedPath.js:89:45:89:52 | realpath | provenance | |
|
|
|
|
|
| TaintedPath.js:120:6:120:47 | path | TaintedPath.js:122:23:122:26 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:120:13:120:36 | url.par ... , true) | TaintedPath.js:120:13:120:42 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:120:13:120:42 | url.par ... ).query | TaintedPath.js:120:13:120:47 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:120:13:120:47 | url.par ... ry.path | TaintedPath.js:120:6:120:47 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:120:23:120:29 | req.url | TaintedPath.js:120:13:120:36 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:126:7:126:48 | path | TaintedPath.js:128:19:128:22 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:126:7:126:48 | path | TaintedPath.js:130:15:130:18 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:126:14:126:37 | url.par ... , true) | TaintedPath.js:126:14:126:43 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:126:14:126:43 | url.par ... ).query | TaintedPath.js:126:14:126:48 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:126:14:126:48 | url.par ... ry.path | TaintedPath.js:126:7:126:48 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:126:24:126:30 | req.url | TaintedPath.js:126:14:126:37 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:130:7:130:29 | split | TaintedPath.js:132:19:132:23 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:130:7:130:29 | split | TaintedPath.js:136:19:136:23 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:130:7:130:29 | split | TaintedPath.js:137:28:137:32 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:130:7:130:29 | split | TaintedPath.js:139:33:139:37 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:130:7:130:29 | split | TaintedPath.js:142:20:142:24 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:130:7:130:29 | split | TaintedPath.js:145:19:145:23 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:130:15:130:18 | path | TaintedPath.js:130:15:130:29 | path.split("/") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:130:15:130:29 | path.split("/") | TaintedPath.js:130:7:130:29 | split | provenance | |
|
|
|
|
|
| TaintedPath.js:132:19:132:23 | split | TaintedPath.js:132:19:132:33 | split.join("/") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:136:19:136:23 | split | TaintedPath.js:136:19:136:26 | split[x] | provenance | Config |
|
|
|
|
|
| TaintedPath.js:137:28:137:32 | split | TaintedPath.js:137:28:137:35 | split[x] | provenance | Config |
|
|
|
|
|
| TaintedPath.js:137:28:137:35 | split[x] | TaintedPath.js:137:19:137:35 | prefix + split[x] | provenance | Config |
|
|
|
|
|
| TaintedPath.js:139:7:139:38 | concatted | TaintedPath.js:140:19:140:27 | concatted | provenance | |
|
|
|
|
|
| TaintedPath.js:139:19:139:38 | prefix.concat(split) | TaintedPath.js:139:7:139:38 | concatted | provenance | |
|
|
|
|
|
| TaintedPath.js:139:33:139:37 | split | TaintedPath.js:139:19:139:38 | prefix.concat(split) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:140:19:140:27 | concatted | TaintedPath.js:140:19:140:37 | concatted.join("/") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:142:7:142:39 | concatted2 | TaintedPath.js:143:19:143:28 | concatted2 | provenance | |
|
|
|
|
|
| TaintedPath.js:142:20:142:24 | split | TaintedPath.js:142:20:142:39 | split.concat(prefix) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:142:20:142:39 | split.concat(prefix) | TaintedPath.js:142:7:142:39 | concatted2 | provenance | |
|
|
|
|
|
| TaintedPath.js:143:19:143:28 | concatted2 | TaintedPath.js:143:19:143:38 | concatted2.join("/") | provenance | Config |
|
|
|
|
|
| TaintedPath.js:145:19:145:23 | split | TaintedPath.js:145:19:145:29 | split.pop() | provenance | Config |
|
|
|
|
|
| TaintedPath.js:150:7:150:48 | path | TaintedPath.js:154:29:154:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:150:7:150:48 | path | TaintedPath.js:160:29:160:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:150:7:150:48 | path | TaintedPath.js:161:29:161:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:150:7:150:48 | path | TaintedPath.js:162:29:162:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:150:7:150:48 | path | TaintedPath.js:163:29:163:32 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:150:7:150:48 | path | TaintedPath.js:178:40:178:43 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:150:7:150:48 | path | TaintedPath.js:179:50:179:53 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:150:14:150:37 | url.par ... , true) | TaintedPath.js:150:14:150:43 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:150:14:150:43 | url.par ... ).query | TaintedPath.js:150:14:150:48 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:150:14:150:48 | url.par ... ry.path | TaintedPath.js:150:7:150:48 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:150:24:150:30 | req.url | TaintedPath.js:150:14:150:37 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:154:29:154:32 | path | TaintedPath.js:154:29:154:55 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:160:29:160:32 | path | TaintedPath.js:160:29:160:52 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:161:29:161:32 | path | TaintedPath.js:161:29:161:53 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:162:29:162:32 | path | TaintedPath.js:162:29:162:51 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:163:29:163:32 | path | TaintedPath.js:163:29:163:57 | path.re ... /g, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:178:40:178:43 | path | TaintedPath.js:178:40:178:73 | path.re ... +/, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:178:40:178:73 | path.re ... +/, '') | TaintedPath.js:178:29:178:73 | "prefix ... +/, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:179:29:179:54 | pathMod ... e(path) | TaintedPath.js:179:29:179:84 | pathMod ... +/, '') | provenance | Config |
|
|
|
|
|
| TaintedPath.js:179:50:179:53 | path | TaintedPath.js:179:29:179:54 | pathMod ... e(path) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:187:29:187:45 | qs.parse(req.url) | TaintedPath.js:187:29:187:49 | qs.pars ... rl).foo | provenance | Config |
|
|
|
|
|
| TaintedPath.js:187:38:187:44 | req.url | TaintedPath.js:187:29:187:45 | qs.parse(req.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:188:29:188:59 | qs.pars ... q.url)) | TaintedPath.js:188:29:188:63 | qs.pars ... l)).foo | provenance | Config |
|
|
|
|
|
| TaintedPath.js:188:38:188:58 | normali ... eq.url) | TaintedPath.js:188:29:188:59 | qs.pars ... q.url)) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:188:51:188:57 | req.url | TaintedPath.js:188:38:188:58 | normali ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:190:29:190:51 | parseqs ... eq.url) | TaintedPath.js:190:29:190:55 | parseqs ... rl).foo | provenance | Config |
|
|
|
|
|
| TaintedPath.js:190:44:190:50 | req.url | TaintedPath.js:190:29:190:51 | parseqs ... eq.url) | provenance | Config |
|
|
|
|
|
| TaintedPath.js:195:7:195:48 | path | TaintedPath.js:196:31:196:34 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:195:7:195:48 | path | TaintedPath.js:197:45:197:48 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:195:7:195:48 | path | TaintedPath.js:198:35:198:38 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:195:14:195:37 | url.par ... , true) | TaintedPath.js:195:14:195:43 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| TaintedPath.js:195:14:195:43 | url.par ... ).query | TaintedPath.js:195:14:195:48 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
| TaintedPath.js:195:14:195:48 | url.par ... ry.path | TaintedPath.js:195:7:195:48 | path | provenance | |
|
|
|
|
|
| TaintedPath.js:195:24:195:30 | req.url | TaintedPath.js:195:14:195:37 | url.par ... , true) | provenance | Config |
|
|
|
|
|
| examples/TaintedPath.js:8:7:8:52 | filePath | examples/TaintedPath.js:11:36:11:43 | filePath | provenance | |
|
|
|
|
|
| examples/TaintedPath.js:8:18:8:41 | url.par ... , true) | examples/TaintedPath.js:8:18:8:47 | url.par ... ).query | provenance | Config |
|
|
|
|
|
| examples/TaintedPath.js:8:18:8:47 | url.par ... ).query | examples/TaintedPath.js:8:18:8:52 | url.par ... ry.path | provenance | Config |
|
|
|
|
|
@@ -936,34 +929,33 @@ subpaths
|
|
|
|
|
| TaintedPath.js:56:29:56:52 | pathMod ... e(path) | TaintedPath.js:38:20:38:26 | req.url | TaintedPath.js:56:29:56:52 | pathMod ... e(path) | This path depends on a $@. | TaintedPath.js:38:20:38:26 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:58:29:58:61 | pathMod ... ath, z) | TaintedPath.js:38:20:38:26 | req.url | TaintedPath.js:58:29:58:61 | pathMod ... ath, z) | This path depends on a $@. | TaintedPath.js:38:20:38:26 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:60:29:60:61 | pathMod ... h(path) | TaintedPath.js:38:20:38:26 | req.url | TaintedPath.js:60:29:60:61 | pathMod ... h(path) | This path depends on a $@. | TaintedPath.js:38:20:38:26 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:71:26:71:45 | Cookie.get("unsafe") | TaintedPath.js:95:30:95:31 | ev | TaintedPath.js:71:26:71:45 | Cookie.get("unsafe") | This path depends on a $@. | TaintedPath.js:95:30:95:31 | ev | user-provided value |
|
|
|
|
|
| TaintedPath.js:77:31:77:76 | require ... ).query | TaintedPath.js:77:63:77:69 | req.url | TaintedPath.js:77:31:77:76 | require ... ).query | This path depends on a $@. | TaintedPath.js:77:63:77:69 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:78:31:78:74 | require ... ).query | TaintedPath.js:78:61:78:67 | req.url | TaintedPath.js:78:31:78:74 | require ... ).query | This path depends on a $@. | TaintedPath.js:78:61:78:67 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:79:31:79:73 | require ... ).query | TaintedPath.js:79:60:79:66 | req.url | TaintedPath.js:79:31:79:73 | require ... ).query | This path depends on a $@. | TaintedPath.js:79:60:79:66 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:87:48:87:60 | req.params[0] | TaintedPath.js:87:48:87:60 | req.params[0] | TaintedPath.js:87:48:87:60 | req.params[0] | This path depends on a $@. | TaintedPath.js:87:48:87:60 | req.params[0] | user-provided value |
|
|
|
|
|
| TaintedPath.js:102:28:102:48 | fs.real ... c(path) | TaintedPath.js:100:23:100:29 | req.url | TaintedPath.js:102:28:102:48 | fs.real ... c(path) | This path depends on a $@. | TaintedPath.js:100:23:100:29 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:105:45:105:52 | realpath | TaintedPath.js:100:23:100:29 | req.url | TaintedPath.js:105:45:105:52 | realpath | This path depends on a $@. | TaintedPath.js:100:23:100:29 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:138:23:138:26 | path | TaintedPath.js:136:23:136:29 | req.url | TaintedPath.js:138:23:138:26 | path | This path depends on a $@. | TaintedPath.js:136:23:136:29 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:144:19:144:22 | path | TaintedPath.js:142:24:142:30 | req.url | TaintedPath.js:144:19:144:22 | path | This path depends on a $@. | TaintedPath.js:142:24:142:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:148:19:148:33 | split.join("/") | TaintedPath.js:142:24:142:30 | req.url | TaintedPath.js:148:19:148:33 | split.join("/") | This path depends on a $@. | TaintedPath.js:142:24:142:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:152:19:152:26 | split[x] | TaintedPath.js:142:24:142:30 | req.url | TaintedPath.js:152:19:152:26 | split[x] | This path depends on a $@. | TaintedPath.js:142:24:142:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:153:19:153:35 | prefix + split[x] | TaintedPath.js:142:24:142:30 | req.url | TaintedPath.js:153:19:153:35 | prefix + split[x] | This path depends on a $@. | TaintedPath.js:142:24:142:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:156:19:156:37 | concatted.join("/") | TaintedPath.js:142:24:142:30 | req.url | TaintedPath.js:156:19:156:37 | concatted.join("/") | This path depends on a $@. | TaintedPath.js:142:24:142:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:159:19:159:38 | concatted2.join("/") | TaintedPath.js:142:24:142:30 | req.url | TaintedPath.js:159:19:159:38 | concatted2.join("/") | This path depends on a $@. | TaintedPath.js:142:24:142:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:161:19:161:29 | split.pop() | TaintedPath.js:142:24:142:30 | req.url | TaintedPath.js:161:19:161:29 | split.pop() | This path depends on a $@. | TaintedPath.js:142:24:142:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:170:29:170:55 | path.re ... /g, '') | TaintedPath.js:166:24:166:30 | req.url | TaintedPath.js:170:29:170:55 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:166:24:166:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:176:29:176:52 | path.re ... /g, '') | TaintedPath.js:166:24:166:30 | req.url | TaintedPath.js:176:29:176:52 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:166:24:166:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:177:29:177:53 | path.re ... /g, '') | TaintedPath.js:166:24:166:30 | req.url | TaintedPath.js:177:29:177:53 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:166:24:166:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:178:29:178:51 | path.re ... /g, '') | TaintedPath.js:166:24:166:30 | req.url | TaintedPath.js:178:29:178:51 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:166:24:166:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:179:29:179:57 | path.re ... /g, '') | TaintedPath.js:166:24:166:30 | req.url | TaintedPath.js:179:29:179:57 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:166:24:166:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:194:29:194:73 | "prefix ... +/, '') | TaintedPath.js:166:24:166:30 | req.url | TaintedPath.js:194:29:194:73 | "prefix ... +/, '') | This path depends on a $@. | TaintedPath.js:166:24:166:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:195:29:195:84 | pathMod ... +/, '') | TaintedPath.js:166:24:166:30 | req.url | TaintedPath.js:195:29:195:84 | pathMod ... +/, '') | This path depends on a $@. | TaintedPath.js:166:24:166:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:203:29:203:49 | qs.pars ... rl).foo | TaintedPath.js:203:38:203:44 | req.url | TaintedPath.js:203:29:203:49 | qs.pars ... rl).foo | This path depends on a $@. | TaintedPath.js:203:38:203:44 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:204:29:204:63 | qs.pars ... l)).foo | TaintedPath.js:204:51:204:57 | req.url | TaintedPath.js:204:29:204:63 | qs.pars ... l)).foo | This path depends on a $@. | TaintedPath.js:204:51:204:57 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:206:29:206:55 | parseqs ... rl).foo | TaintedPath.js:206:44:206:50 | req.url | TaintedPath.js:206:29:206:55 | parseqs ... rl).foo | This path depends on a $@. | TaintedPath.js:206:44:206:50 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:212:31:212:34 | path | TaintedPath.js:211:24:211:30 | req.url | TaintedPath.js:212:31:212:34 | path | This path depends on a $@. | TaintedPath.js:211:24:211:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:213:45:213:48 | path | TaintedPath.js:211:24:211:30 | req.url | TaintedPath.js:213:45:213:48 | path | This path depends on a $@. | TaintedPath.js:211:24:211:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:214:35:214:38 | path | TaintedPath.js:211:24:211:30 | req.url | TaintedPath.js:214:35:214:38 | path | This path depends on a $@. | TaintedPath.js:211:24:211:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:65:31:65:76 | require ... ).query | TaintedPath.js:65:63:65:69 | req.url | TaintedPath.js:65:31:65:76 | require ... ).query | This path depends on a $@. | TaintedPath.js:65:63:65:69 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:66:31:66:74 | require ... ).query | TaintedPath.js:66:61:66:67 | req.url | TaintedPath.js:66:31:66:74 | require ... ).query | This path depends on a $@. | TaintedPath.js:66:61:66:67 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:67:31:67:73 | require ... ).query | TaintedPath.js:67:60:67:66 | req.url | TaintedPath.js:67:31:67:73 | require ... ).query | This path depends on a $@. | TaintedPath.js:67:60:67:66 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:75:48:75:60 | req.params[0] | TaintedPath.js:75:48:75:60 | req.params[0] | TaintedPath.js:75:48:75:60 | req.params[0] | This path depends on a $@. | TaintedPath.js:75:48:75:60 | req.params[0] | user-provided value |
|
|
|
|
|
| TaintedPath.js:86:28:86:48 | fs.real ... c(path) | TaintedPath.js:84:23:84:29 | req.url | TaintedPath.js:86:28:86:48 | fs.real ... c(path) | This path depends on a $@. | TaintedPath.js:84:23:84:29 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:89:45:89:52 | realpath | TaintedPath.js:84:23:84:29 | req.url | TaintedPath.js:89:45:89:52 | realpath | This path depends on a $@. | TaintedPath.js:84:23:84:29 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:122:23:122:26 | path | TaintedPath.js:120:23:120:29 | req.url | TaintedPath.js:122:23:122:26 | path | This path depends on a $@. | TaintedPath.js:120:23:120:29 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:128:19:128:22 | path | TaintedPath.js:126:24:126:30 | req.url | TaintedPath.js:128:19:128:22 | path | This path depends on a $@. | TaintedPath.js:126:24:126:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:132:19:132:33 | split.join("/") | TaintedPath.js:126:24:126:30 | req.url | TaintedPath.js:132:19:132:33 | split.join("/") | This path depends on a $@. | TaintedPath.js:126:24:126:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:136:19:136:26 | split[x] | TaintedPath.js:126:24:126:30 | req.url | TaintedPath.js:136:19:136:26 | split[x] | This path depends on a $@. | TaintedPath.js:126:24:126:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:137:19:137:35 | prefix + split[x] | TaintedPath.js:126:24:126:30 | req.url | TaintedPath.js:137:19:137:35 | prefix + split[x] | This path depends on a $@. | TaintedPath.js:126:24:126:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:140:19:140:37 | concatted.join("/") | TaintedPath.js:126:24:126:30 | req.url | TaintedPath.js:140:19:140:37 | concatted.join("/") | This path depends on a $@. | TaintedPath.js:126:24:126:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:143:19:143:38 | concatted2.join("/") | TaintedPath.js:126:24:126:30 | req.url | TaintedPath.js:143:19:143:38 | concatted2.join("/") | This path depends on a $@. | TaintedPath.js:126:24:126:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:145:19:145:29 | split.pop() | TaintedPath.js:126:24:126:30 | req.url | TaintedPath.js:145:19:145:29 | split.pop() | This path depends on a $@. | TaintedPath.js:126:24:126:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:154:29:154:55 | path.re ... /g, '') | TaintedPath.js:150:24:150:30 | req.url | TaintedPath.js:154:29:154:55 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:150:24:150:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:160:29:160:52 | path.re ... /g, '') | TaintedPath.js:150:24:150:30 | req.url | TaintedPath.js:160:29:160:52 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:150:24:150:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:161:29:161:53 | path.re ... /g, '') | TaintedPath.js:150:24:150:30 | req.url | TaintedPath.js:161:29:161:53 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:150:24:150:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:162:29:162:51 | path.re ... /g, '') | TaintedPath.js:150:24:150:30 | req.url | TaintedPath.js:162:29:162:51 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:150:24:150:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:163:29:163:57 | path.re ... /g, '') | TaintedPath.js:150:24:150:30 | req.url | TaintedPath.js:163:29:163:57 | path.re ... /g, '') | This path depends on a $@. | TaintedPath.js:150:24:150:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:178:29:178:73 | "prefix ... +/, '') | TaintedPath.js:150:24:150:30 | req.url | TaintedPath.js:178:29:178:73 | "prefix ... +/, '') | This path depends on a $@. | TaintedPath.js:150:24:150:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:179:29:179:84 | pathMod ... +/, '') | TaintedPath.js:150:24:150:30 | req.url | TaintedPath.js:179:29:179:84 | pathMod ... +/, '') | This path depends on a $@. | TaintedPath.js:150:24:150:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:187:29:187:49 | qs.pars ... rl).foo | TaintedPath.js:187:38:187:44 | req.url | TaintedPath.js:187:29:187:49 | qs.pars ... rl).foo | This path depends on a $@. | TaintedPath.js:187:38:187:44 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:188:29:188:63 | qs.pars ... l)).foo | TaintedPath.js:188:51:188:57 | req.url | TaintedPath.js:188:29:188:63 | qs.pars ... l)).foo | This path depends on a $@. | TaintedPath.js:188:51:188:57 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:190:29:190:55 | parseqs ... rl).foo | TaintedPath.js:190:44:190:50 | req.url | TaintedPath.js:190:29:190:55 | parseqs ... rl).foo | This path depends on a $@. | TaintedPath.js:190:44:190:50 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:196:31:196:34 | path | TaintedPath.js:195:24:195:30 | req.url | TaintedPath.js:196:31:196:34 | path | This path depends on a $@. | TaintedPath.js:195:24:195:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:197:45:197:48 | path | TaintedPath.js:195:24:195:30 | req.url | TaintedPath.js:197:45:197:48 | path | This path depends on a $@. | TaintedPath.js:195:24:195:30 | req.url | user-provided value |
|
|
|
|
|
| TaintedPath.js:198:35:198:38 | path | TaintedPath.js:195:24:195:30 | req.url | TaintedPath.js:198:35:198:38 | path | This path depends on a $@. | TaintedPath.js:195:24:195:30 | req.url | user-provided value |
|
|
|
|
|
| examples/TaintedPath.js:11:29:11:43 | ROOT + filePath | examples/TaintedPath.js:8:28:8:34 | req.url | examples/TaintedPath.js:11:29:11:43 | ROOT + filePath | This path depends on a $@. | examples/TaintedPath.js:8:28:8:34 | req.url | user-provided value |
|
|
|
|
|
| express.js:8:20:8:32 | req.query.bar | express.js:8:20:8:32 | req.query.bar | express.js:8:20:8:32 | req.query.bar | This path depends on a $@. | express.js:8:20:8:32 | req.query.bar | user-provided value |
|
|
|
|
|
| handlebars.js:11:32:11:39 | filePath | handlebars.js:29:46:29:60 | req.params.path | handlebars.js:11:32:11:39 | filePath | This path depends on a $@. | handlebars.js:29:46:29:60 | req.params.path | user-provided value |
|
|
|
|
|
|