gpt4 book ai didi

java - FindBugs 不检测 SQL 注入(inject)

转载 作者:行者123 更新时间:2023-11-30 10:11:29 33 4
gpt4 key购买 nike

我遇到过 FindBugs 没有在我的项目中检测到 SQL 注入(inject)的情况。项目是使用 Gradle 构建的,并使用了 FindBugs 插件。我正在使用 hibernate 连接到数据库。下面是包含 SQL 注入(inject)的部分,

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 注入(inject)。当我使用 Veracode 运行同一个项目时,它显示了我提到的部分的 SQL 注入(inject)。下面是我的 build.gradle 下的 FindBugs 插件部分。

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 注入(inject),

Bug description: FindBugs

如何解决这个问题,或者是否有任何其他方法可以检测项目中的 SQL 注入(inject)?

最佳答案

升级到 SpotBugs 3.1.7 和 findsecbugs-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 = ...

(然后重写你的代码,当然 :) )

关于java - FindBugs 不检测 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418691/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com