Sonarqube 在我的休眠 sql 中警告输入驱动的列名的 sql 注入

Sonarqube warned sql injection on the input-driven column name in my hibernate sql

提问人:Laodao 提问时间:12/14/2021 更新时间:12/14/2021 访问量:1038

问:

我的 java(Hibernate、MySql)代码采用输入数据来决定我要更新哪一列,如下所示:

String hsql = "update People set " + inputColumnName + " = null";
Query query = myHibernateSession.createQuery(hsql);
query.executeUpdate();

但是,Sonarqube 说“更改此代码,使其不直接从用户控制的数据构造 SQL 查询”。无论如何,我可以避免此错误(修复此问题或绕过声纳检查而不关闭此规则)?

java mysql hibernate sonarqube sql 注入

评论


答:

0赞 Matt Vickery 12/14/2021 #1

您需要将变量限制为列名,并消除插入语句的可能性。使用绑定变量会有所帮助,但请看一些示例,例如: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html