java - FindBugs 未检测到 SQL 注入
问题描述
我遇到过 FindBugs 没有在我的项目中检测到 SQL 注入的情况。项目是使用 Gradle 构建的,并使用了 FindBugs 插件。我正在使用休眠连接到数据库。下面是包含 SQL 注入的部分,
public List<String> fetchApplicationRequests(String applicationId,
String fromDate, String toDate) throws ParseException {
String sb = "SELECT * FROM table where applicationid = " + applicationId;
Query query = getCurrentSession().createQuery(sb);
query.setParameter("appId", applicationId);
return (List<String>) query.list();
}
很明显,上面的部分显示了一个 SQL 注入。当我使用 Veracode 运行同一个项目时,它显示了我提到的部分的 SQL 注入。下面是我的build.gradle
.
apply plugin: "findbugs"
findbugs {
toolVersion = '3.0.1'
effort = "max"
ignoreFailures = true
findbugsTest.enabled = false
}
tasks.withType(FindBugs) {
reports {
xml.enabled = false
html.enabled = true
}
}
当我运行命令时:
> ./gradlew clean build
它显示了在我的项目中发现的错误列表build/reports/findbugs/main.html
下面是 FindBugs 检测到的错误列表,
- 不良做法警告 - 6
- 正确性警告 - 17
- 国际化警告 - 31
- 恶意代码漏洞警告 - 52
- 性能警告 - 15
- 狡猾的代码警告 - 46
我希望 SQL 注入属于未检测到的安全类别,
如何解决这个问题,或者有什么其他方法可以在我的项目中检测到 SQL 注入?
解决方案
升级到 SpotBugs 3.1.7 并找到secbugs-plugin-1.8.0.jar。然后你得到
This use of org/hibernate/Session.createQuery(Ljava/lang/String;)Lorg/hibernate/Query; can be vulnerable to SQL/HQL injection
为线
Query query = ...
(然后重写你的代码,当然:))
推荐阅读
- html - CSS 媒体查询在 Rails 邮件模板中不起作用
- keras - keras.callbacks.Callback的on_epoch_end参数中日志分数属于哪个类
- python - 如何在不使用星号、循环、数组、导入的情况下重复字符串消息
- python - 无法在命令提示符或 anaconda 提示符下安装 Snakemake
- sql-server - 将链接服务器中的列整理到另一个服务器表“SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_CI_AS”中
- android - 为什么即使我遵循了一些教程,我的微调器也不显示任何内容?
- mysql - 如何在没有 springboot 和 maven 的情况下将 Spring Data JPA 与 Spring&Hibernate 框架一起使用
- node.js - 使用 discord.js 显示一个类别中有多少频道
- python - Pynput 脚本不返回带有转义键的输出
- react-native - 如何使用 react-native-gifted-chat 在聊天应用程序中只让一个用户在左侧,而其他用户在右侧