我遇到了一个情况,在我的项目中,FindBugs没有检测到SQL注入。该项目是用Gradle构建的,使用了FindBugs插件。我使用hibernate连接到DB。下面是包含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下的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检测到的错误列表,
我期望安全类别下的SQL注入未被检测到,
Bug描述: FindBugs
如何解决这个问题,或者是否有其他方法可以检测到项目中的SQL注入?
发布于 2018-09-20 06:43:55
升级到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 = ...(然后重写您的代码,当然:)
https://stackoverflow.com/questions/52418691
复制相似问题