1、背景描述

前段时间在考虑使用CodeQL检测SpringBoot应用中的SQLi时,发现SQL语句的映射文件Mapper.xml都没有包含到CodeQL的数据库中,所以无法关联到对应的SQL语句,我在看日志时发现了方案一这样的解决办法,后来在看CodeQL在Github中的Issure时看到方案二这样的办法。

我个人更喜欢使用方案一。

2、方案一

在codeql-cli/java/tools/pre-finalize.cmd文件中插入—include “/resources//*.xml”
image.png

—include命令可以使用如下通配符
?,用来匹配正斜杠/反斜杠之外的任意单个字符
,用来匹配正斜杠/反斜杠之外的任意数量的字符
*
,用来匹配零个或多个完整的目录

—include “/resources//*.xml”表示将resources目录下面所有的xml文件加入索引文件

3、方案二

https://github.com/github/codeql/issues/3887
拆分为如下命令,在index-files中将xml文件添加到CodeQL的数据库中

  1. codeql database init --source-root=<src> --language java <db>
  2. codeql database trace-command --working-dir=<src> <db> <java command>
  3. codeql database index-files --language xml --include-extension .xml --working-dir=<src> <db>
  4. codeql database finalize <db>

上面的4条命令等价于下面这1条命令

  1. codeql database create --source-root <src> --language java --command <java command> <db>