/sonarqube-mybatis-plugin

Simple plugin of sonar for scanning '$' in ibatis's *-Mapper.xml

Primary LanguageJavaMIT LicenseMIT

sonarqube-mybatis-plugin

插件概要

本插件在sonarqube-xml-plugin的基础上进行了修改,修改后的插件能够自动地检测出使用mybatis框架的项目中存在sql注入漏洞风险的代码片段,目前只是针对使用“$”的场景进行扫描,但对like、in等特殊的查询并没有作进一步的判断检测,这只是一个自定义插件的简单实践。

使用说明

  • 编译打包:mvn clean install -DskipTests image
  • 启动sonar,以管理员权限卸载Soner内置的xml检测规则,避免冲突: image
  • 将编译所得的可执行jar包导入Sonar的/extention/plugins目录下: image
  • 重启Sonar
  • 登陆Sonar,并在Rules中查看新建的XML检测规则信息如下: image image
  • 在Quality-Profiles中将该条规则启动并设为default模式: 参考链接
  • 使用sonar-scanner测试规则:
    sonar-scanner -Dsonar.projectKey=test -Dsonar.sources=./src/ -Dsonar.host.url=http://xxx.xxx.xxx.xxx -Dsonar.login=xxxxxxxxxxxxxxxxxxx -Dproject.settings=./sonar-project.properties -Dsonar.scm.disabled=true
    其中:
    -Dsonar.sources:设置扫描代码项目所在路径
    sonar-project.properties配置文件里添加如下内容:
    sonar.projectKey=test
    sonar.projectName=test
    sonar.sources=/opt/sonar-xml-master/src
    sonar.java.binaries=/opt/sonar-xml-master/sonar-xml-plugin/target/classes

    简单的测试用例: image
    该插件会自动扫描${}链接符的使用情况,在并其所在sql语句的id处进行标注:
    image
    image

参考链接

功能添加

  • 完善针对mybatis框架的检测规则,针对likein等特殊场景下${}的使用进行细粒度的检测
  • 其他主流框架代码风险发现插件开发