Skip to content

Commit 518459c

Browse files
committed
Abstract Xss sanitizer
Turn the Xss sanitizer into an abstract class to support customizations and provide a default implementation.
1 parent 99c9524 commit 518459c

File tree

2 files changed

+9
-3
lines changed
  • java/ql/src

2 files changed

+9
-3
lines changed

java/ql/src/Security/CWE/CWE-079/XSS.ql

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ class XSSConfig extends TaintTracking::Configuration {
2222

2323
override predicate isSink(DataFlow::Node sink) { sink instanceof XssSink }
2424

25-
override predicate isSanitizer(DataFlow::Node node) {
26-
node.getType() instanceof NumericType or node.getType() instanceof BooleanType
27-
}
25+
override predicate isSanitizer(DataFlow::Node node) { node instanceof XssSanitizer }
2826
}
2927

3028
from DataFlow::PathNode source, DataFlow::PathNode sink, XSSConfig conf

java/ql/src/semmle/code/java/security/XSS.qll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import semmle.code.java.dataflow.TaintTracking2
1212

1313
abstract class XssSink extends DataFlow::Node { }
1414

15+
abstract class XssSanitizer extends DataFlow::Node { }
16+
1517
private class DefaultXssSink extends XssSink {
1618
DefaultXssSink() {
1719
exists(HttpServletResponseSendErrorMethod m, MethodAccess ma |
@@ -80,6 +82,12 @@ private class DefaultXssSink extends XssSink {
8082
}
8183
}
8284

85+
private class DefaultXSSSanitizer extends XssSanitizer {
86+
DefaultXSSSanitizer() {
87+
this.getType() instanceof NumericType or this.getType() instanceof BooleanType
88+
}
89+
}
90+
8391
private class ServletWriterSourceToWritingMethodFlowConfig extends TaintTracking2::Configuration {
8492
ServletWriterSourceToWritingMethodFlowConfig() {
8593
this = "XSS::ServletWriterSourceToWritingMethodFlowConfig"

0 commit comments

Comments
 (0)