File tree Expand file tree Collapse file tree 2 files changed +25
-3
lines changed
python/ql/src/experimental/semmle/python Expand file tree Collapse file tree 2 files changed +25
-3
lines changed Original file line number Diff line number Diff line change @@ -14,16 +14,35 @@ private import semmle.python.dataflow.new.RemoteFlowSources
14
14
private import semmle.python.dataflow.new.TaintTracking
15
15
private import experimental.semmle.python.Frameworks
16
16
17
+ /** Provides classes for modeling HTTP Header APIs. */
17
18
module HeaderDeclaration {
19
+ /**
20
+ * A data-flow node that collects functions setting HTTP Headers' content.
21
+ *
22
+ * Extend this class to model new APIs. If you want to refine existing API models,
23
+ * extend `HeaderDeclaration` instead.
24
+ */
18
25
abstract class Range extends DataFlow:: Node {
19
- abstract DataFlow:: Node getHeaderInputNode ( ) ;
26
+ /**
27
+ * Gets the argument containing the header value.
28
+ */
29
+ abstract DataFlow:: Node getHeaderInput ( ) ;
20
30
}
21
31
}
22
32
33
+ /**
34
+ * A data-flow node that collects functions setting HTTP Headers' content.
35
+ *
36
+ * Extend this class to model new APIs. If you want to refine existing API models,
37
+ * extend `HeaderDeclaration` instead.
38
+ */
23
39
class HeaderDeclaration extends DataFlow:: Node {
24
40
HeaderDeclaration:: Range range ;
25
41
26
42
HeaderDeclaration ( ) { this = range }
27
43
28
- DataFlow:: Node getHeaderInputNode ( ) { result = range .getHeaderInputNode ( ) }
44
+ /**
45
+ * Gets the argument containing the header value.
46
+ */
47
+ DataFlow:: Node getHeaderInput ( ) { result = range .getHeaderInput ( ) }
29
48
}
Original file line number Diff line number Diff line change @@ -4,12 +4,15 @@ import semmle.python.dataflow.new.DataFlow
4
4
import semmle.python.dataflow.new.TaintTracking
5
5
import semmle.python.dataflow.new.RemoteFlowSources
6
6
7
+ /**
8
+ * A taint-tracking configuration for detecting HTTP Header injections.
9
+ */
7
10
class HeaderInjectionFlowConfig extends TaintTracking:: Configuration {
8
11
HeaderInjectionFlowConfig ( ) { this = "HeaderInjectionFlowConfig" }
9
12
10
13
override predicate isSource ( DataFlow:: Node source ) { source instanceof RemoteFlowSource }
11
14
12
15
override predicate isSink ( DataFlow:: Node sink ) {
13
- sink = any ( HeaderDeclaration headerDeclaration ) .getHeaderInputNode ( )
16
+ sink = any ( HeaderDeclaration headerDeclaration ) .getHeaderInput ( )
14
17
}
15
18
}
You can’t perform that action at this time.
0 commit comments