首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FindBugs不检测SQL注入。

FindBugs不检测SQL注入。
EN

Stack Overflow用户
提问于 2018-09-20 06:12:41
回答 1查看 514关注 0票数 2

我遇到了一个情况,在我的项目中,FindBugs没有检测到SQL注入。该项目是用Gradle构建的,使用了FindBugs插件。我使用hibernate连接到DB。下面是包含SQL注入的部分,

代码语言:javascript
复制
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下的build.gradle插件部分。

代码语言:javascript
复制
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
 }
}

当我运行通讯时:

代码语言:javascript
复制
> ./gradlew clean build

它显示了我在build/reports/findbugs/main.html下的项目中发现的错误列表。

下面是FindBugs检测到的错误列表,

  • 不良行为警告-6
  • 正确性警告- 17
  • 国际化警告- 31
  • 恶意代码漏洞警告- 52
  • 表现警告- 15
  • 错误代码警告- 46

我期望安全类别下的SQL注入未被检测到,

Bug描述: FindBugs

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

EN

回答 1

Stack Overflow用户

发布于 2018-09-20 06:43:55

升级到SpotBugs 3.1.7和findsecbugs plugin-1.8.0.jar。然后你会得到

代码语言:javascript
复制
This use of org/hibernate/Session.createQuery(Ljava/lang/String;)Lorg/hibernate/Query; can be vulnerable to SQL/HQL injection

为线

代码语言:javascript
复制
Query query = ...

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52418691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档