
用SpotBugs插件自动扫描Java项目SQL注入
SpotBugs本身不直接检测SQL注入,必须搭配findsecbugs插件才能生效,该插件分析字节码中危险API调用路径并触发告警。配置时需显式引入插件,注意版本兼容性。工具存在误报和漏报,无法替代人工代码审计。
### 关于静态工具检测SQL注入,确实存在不少误解需要澄清
许多人误以为 SpotBugs(原 FindBugs)本身能够“自动发现 SQL 注入”,但事实并非如此——它并不具备这一能力。SpotBugs 主要基于字节码进行规则匹配,像 `String` 拼接、`Statement.execute` 这类典型的漏洞模式,并不在其内置规则集中。如果你在 IDE 中看到“SpotBugs 报 SQL 注入警告”,八成是误判,或者混入了其他工具的规则,比如 SonarQube 的规则、IDEA 的 Inspection,或者下文会提到的第三方插件。
` 配置中添加 ``,引用 `com.h3xstream.findsecbugs:findsecbugs-plugin`。
* **Gradle 示例**:在 `spotbugsMain { plugins = ['findsecbugs'] }` 中声明启用。注意版本兼容性,例如 SpotBugs 4.8.x 对应 findsecbugs 1.12.x。
* 插件默认的规则名是 `SQL_INJECTION`,但并非对所有字符串拼接都会报警。它只针对明确流向 `Statement` 或 `CallableStatement`、且没有使用 `PreparedStatement` 参数绑定的路径触发告警。
