前段时间在考虑使用CodeQL检测SpringBoot应用中的SQLi时,发现SQL语句的映射文件Mapper.xml都没有包含到CodeQL的数据库中,所以无法关联到对应的SQL语句,我在看日志时发现了方案一这样的解决办法,后来在看CodeQL在Github中的Issure时看到方案二这样的办法。
我个人更喜欢使用方案一。
在codeql-cli/java/tools/pre-finalize.cmd文件中插入--include "**/resources/**/*.xml"
--include命令可以使用如下通配符
?,用来匹配正斜杠/反斜杠之外的任意单个字符
*,用来匹配正斜杠/反斜杠之外的任意数量的字符
**,用来匹配零个或多个完整的目录
--include "**/resources/**/*.xml"表示将resources目录下面所有的xml文件加入索引文件
然后像以前一样使用database create创建数据库即可。
https://github.com/github/codeql/issues/3887
如下是我们常见的创建数据库的命令
可以将上面的命令拆分为如下4条命令,在index-files中将xml文件添加到CodeQL的数据库中CodeQL将XML文件包含到CodeQL数据库