@@ -13,14 +13,28 @@ import semmle.javascript.security.dataflow.NosqlInjection
13
13
import semmle.javascript.security.dataflow.SqlInjection
14
14
import semmle.javascript.security.dataflow.TaintedPath
15
15
import semmle.javascript.security.dataflow.DomBasedXss
16
+ import evaluation.EndToEndEvaluation
16
17
17
18
int numAlerts ( DataFlow:: Configuration cfg ) {
18
- result = count ( DataFlow:: Node source , DataFlow:: Node sink | cfg .hasFlow ( source , sink ) )
19
+ result =
20
+ count ( DataFlow:: Node source , DataFlow:: Node sink |
21
+ cfg .hasFlow ( source , sink ) and not isFlowExcluded ( source , sink )
22
+ )
19
23
}
20
24
21
25
select numAlerts ( any ( NosqlInjection:: Configuration cfg ) ) as numNosqlAlerts ,
22
26
numAlerts ( any ( SqlInjection:: Configuration cfg ) ) as numSqlAlerts ,
23
27
numAlerts ( any ( TaintedPath:: Configuration cfg ) ) as numTaintedPathAlerts ,
24
28
numAlerts ( any ( DomBasedXss:: Configuration cfg ) ) as numXssAlerts ,
25
- count ( NosqlInjection:: Sink sink ) as numNosqlSinks , count ( SqlInjection:: Sink sink ) as numSqlSinks ,
26
- count ( TaintedPath:: Sink sink ) as numTaintedPathSinks , count ( DomBasedXss:: Sink sink ) as numXssSinks
29
+ count ( DataFlow:: Node sink |
30
+ exists ( NosqlInjection:: Configuration cfg | cfg .isSink ( sink ) or cfg .isSink ( sink , _) )
31
+ ) as numNosqlSinks ,
32
+ count ( DataFlow:: Node sink |
33
+ exists ( SqlInjection:: Configuration cfg | cfg .isSink ( sink ) or cfg .isSink ( sink , _) )
34
+ ) as numSqlSinks ,
35
+ count ( DataFlow:: Node sink |
36
+ exists ( TaintedPath:: Configuration cfg | cfg .isSink ( sink ) or cfg .isSink ( sink , _) )
37
+ ) as numTaintedPathSinks ,
38
+ count ( DataFlow:: Node sink |
39
+ exists ( DomBasedXss:: Configuration cfg | cfg .isSink ( sink ) or cfg .isSink ( sink , _) )
40
+ ) as numXssSinks
0 commit comments