繁体   English   中英

查找安全错误-真正的SQL注入还是误报?

[英]Find Security Bugs - Real SQL injection or false positive?

我正在使用FindBug和插件Find Security Bugs来帮助我查找代码中的安全漏洞。 我不确定为什么某些代码被标记为易受SQL注入攻击。

这是两个示例:

final StringBuilder queryString = new StringBuilder("SELECT users.login FROM Users users, Table table WHERE users.idUser = table.users.idUser");
Query query = session.createQuery(queryString.toString()); // This line is flagged


StringBuilder queryString = new StringBuilder("SELECT data FROM Table ");
queryString.append("WHERE table.idEntreprise = :id");
Query query = session.createQuery(queryString.toString()).setInteger("id", id); // This line is flagged

是误报还是我错过了什么? 如果我对问题的理解正确,那么使用createQuery()setX()应该足够了吗?

这是一个误报。 命名查询参数由Hibernate进行转义,因此无法执行SQL注入。

即使第一个没有命名参数的查询也是安全的,因为它不使用users.idUser参数的外部输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM